Re: Trying to produce a Panel Plot

From: Don Morton <morton_at_nyahnyahspammersnyahnyah>
Date: Tue, 21 Apr 2009 13:24:39 +0000

Hi, I don't know if this is useful, or just wasting your time, but it
looks like "maybe" you're having problems because you're trying to do
different things in different plots of your panel. I ran into this
lately and was able to get around it by using a "common" set of
resources for the common stuff, and then each plot had its own set of
unique resources. It seems like this helped to resolve some of the
conflicts. So, it "might" be helpful for you to have a different set
of resources for the plots where you don't want ticks?

Anyway, I'm attaching my script and, if it helps at all, just sent all
your money to morton_at_arsc.edu.

Cheers,

Don Morton
Arctic Region Supercomputing Center

On Tue, Apr 21, 2009 at 10:56 AM, Helen Parish <hparish_at_ess.ucla.edu> wrote:
> Dear Mary,
>
> The lines you suggested did succeed in removing the contour line labels and
> the information label bars, which helps. However, I am still unable to get a
> main title for the panel plot.
>
> I am also still struggling to find a way to get the tick annotation to
> reappear on the bottom plots only in the panel. It seems that once you
> eliminate them on individual plots they do not want to come back. I have
> also attempted to put on an x-axis title, on the bottom plots only, but this
> also does not want to appear. I believe I am doing what is shown in the
> examples.
>
> Note that I had originally tried using the four resP lines you suggested,
> i.e.
>>
>> resP = True ; modify the panel plot
>> resP_at_txString = "Zonally Averaged Zonal wind"
>> resP_at_gsnPanelLabelBar = True ; add common colorbar
>> resP_at_lbLabelFontHeightF = 0.007 ; make labels smaller
>
> and had only tried adding some more space at the top with resP_at_gsnPanelTop
> because it did not work. It still does not work if I remove this (and I
> have, amongst other things, tried putting it back again).
>
> I enclose my current script and panel plot. I am not getting any error
> messages or warnings when I run this script.
>
> Thanks,
> Helen.
>
> (a) Current script :
>
> ;***********************
> ; pantest3.ncl
> ;***********************
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
> ;***********************
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
>
> begin
>
> ; Keep all files open when have a lot of files :
> setfileoption("nc","SuppressClose",False)
>
> diri = "./"
> fili = systemfunc("cd "+diri+" ; ls zeusrand09125*.cam2.h0*nc")
> print(fili)
> nfili = dimsizes(fili)
>
> lev_p = (/ 91500., 90000., 87500., 80000., 67500., 50000., 30000., 20000.,
> 10000., 5000., 3000., 1500., 750., 390., 200., 100., 50.,25., 14., 7., 3.5,
> 1.9, 0.95, 0.4, 0.1, 0.03 /)
>
> ; ***********************************************
> ; Read in multiple files, interpolate, and write to temporary output files
> ; **********************************************
> do nf = 0, nfili-1
>
> fi = addfile (diri+fili(nf), "r")
>
> diro = "./"
> filo = "uthelen"+nf+".nc"
> print(filo)
> system ("/bin/rm -f "+diro+filo) ; remove any pre-exist file
> fo = addfile (diro+filo, "c")
>
> hyam = fi->hyam ; read hybrid info
> hybm = fi->hybm
> hyai = fi->hyai ; read hybrid info
> hybi = fi->hybi
> PS = fi->PS
> P0mb = 0.01*fi->P0
> U = fi->U
> lat = fi->lat
>
> lev_p!0 = "lev_p" ; variable and dimension name the same
> lev_p&lev_p = lev_p ; create coordinate variable
> lev_p_at_long_name = "pressure" ; attach some attributes
> lev_p_at_units = "hPa"
> lev_p_at_positive = "down"
>
> ; Up = vinth2p (U, hyam, hybm, lev_p ,PS, 1, P0mb, 2, False) ; False
> = dont extrapolate pressures
> Up = vinth2p (U, hyam, hybm, lev_p ,PS, 1, P0mb, 2, True) ; True =
> extrapolate pressures
> copy_VarAtts(U, Up)
> fo->U = Up ; write to netCDF file
>
> end do
> ; **************************
> ; calculate zonal average of zonal wind versus time for multiple
> interpolated files
> ; *************************
>
> wks = gsn_open_wks ("pdf", "paninterp4.164to175" ) ; open
> workstation
>
> plot = new(12,graphic)
>
> gsn_define_colormap(wks,"rainbow") ; choose colormap
>
> do nf2 = 0, nfili-1
>
> diri = "./"
> ; fili2 = systemfunc("cd "+diri+" ; ls uthelen*nc")
> fili2 = addfile (diri+"uthelen"+nf2+".nc","r")
>
> print(fili2)
>
> ; U2= addfiles_GetVar(f2,fili2,"U")
>
> U2 = fili2->U
> printVarSummary( U2 ) ; (time, lev_p, lat,lon)
>
> dimt2 = dimsizes( U2 )
> ntim2 = dimt2(0)
> klvl2 = dimt2(1)
> nlat2 = dimt2(2)
> mlon2 = dimt2(3)
>
> ; take zonal average
>
> uavg = dim_avg_Wrap(U2) ; (time,lev_p,lat)
> printVarSummary( uavg )
>
> ;***********************
> ; Create Plot
> ;***********************
>
> nyear = 164+nf2
> nt2 = 0
>
> res = True
>
> res_at_gsnLeftString = ""
> res_at_gsnCenterString = "Year "+ nyear
> res_at_gsnRightString = ""
>
> res_at_cnFillOn = True
> res_at_lbLabelAutoStride = True
> res_at_gsnMaximize = True ; if [ps, eps, pdf] make large
> res_at_gsnSpreadColors = True ; span color map
> res_at_cnLineLabelsOn = False ; Turn off contour line labels
> res_at_cnInfoLabelOn = False ; Turn off informational label
> if (nf2 .le. 8) then
> res_at_tmXBLabelsOn = False ; do not draw bottom labels
> res_at_tmXBOn = False ; no bottom tickmarks
> res_at_lbLabelBarOn = False ; turn off individual colour bars
> end if
>
> res_at_trYReverse = True
>
> res_at_cnLevelSelectionMode = "ManualLevels" ; manually set the contour
> levels with the following 3 resources
> res_at_cnMinLevelValF = -30. ; set the minimum contour
> level
> res_at_cnMaxLevelValF = 65. ; set the maximum contour
> level
> res_at_cnLevelSpacingF = 5. ; set the interval between
> contours
>
> if (nf2 .ge. 9) then
> res_at_tmXBOn = True ; draw bottom tickmarks
> res_at_tmXBLabelsOn = True ; draw bottom labels
> res_at_tiXAxisString = "Latitude (degrees)"
> end if
> plot(nf2) = gsn_csm_pres_hgt(wks, uavg(lev_p | 0:20, lat | :, time |
> nt2), res ) ; (lev,lat)
>
> end do
>
> resP = True ; modify the panel plot
> resP_at_gsnPanelTop = 0.95 ; add some space at top
> resP_at_gsnPanelBottom = 0.05 ; add some space at bottom
> resP_at_txString = "Zonally Averaged Zonal wind"
> resP_at_gsnPanelLabelBar = True ; add common colorbar
> resP_at_lbLabelFontHeightF = 0.007 ; make labels smaller
>
> gsn_panel(wks,plot,(/4,3/),False)
>
> end
>
>
> (b) Current panel plot :
>
>
>
>
> On Apr 20, 2009, at 8:51 AM, Mary Haley wrote:
>
>>
>> Helen,
>>
>> This may be a bug, and I'll take a look.
>>
>> Meanwhile, try setting these additional resources:
>>
>> res_at_cnLineLabelsOn = False ; Turn off contour line labels
>> res_at_cnInfoLabelOn = False ; Turn off informational label
>>
>> For the main title, setting:
>>
>> resP_at_txString = "...."
>>
>> should work for getting you a main title. However, setting:
>>
>> resP_at_gsnPanelTop = 0.05 ; add some space at top
>>
>> will not work, because 0.05 is at the bottom of the screen. I think
>> you meant to try 0.95.
>>
>> You shouldn't need to set gsnPanelTop, though, so try just these
>> settings to see if the title shows up:
>>
>> resP = True ; modify the panel plot
>> resP_at_txString = "Zonally Averaged Zonal wind"
>> resP_at_gsnPanelLabelBar = True ; add common colorbar
>> resP_at_lbLabelFontHeightF = 0.007 ; make labels smaller
>>
>> gsn_panel(wks,plot,(/4,3/),False)
>>
>> If the title still doesn't show up, then please send me the resultant
>> image, and any errors/warnings that may be showing up when you run
>> your script.
>>
>> --Mary
>>
>>
>>
>> On Mon, 20 Apr 2009, Helen Parish wrote:
>>
>>> I am trying to create a panel of plots similar to the one shown in (b)
>>> below. I am hoping to save space by using the same color bar and axes labels
>>> for all plots. I have tried to follow the suggestions on the manual pages
>>> for how to do this, but they do not seem to work. The difficulties I am
>>> having are as follows:
>>>
>>> 1) I have used "res_at_lbLabelBarOn = False" to turn
>>> off individual color bars on each plot
>>> and "resP_at_gsnPanelLabelBar = True" to add a
>>> common color bar
>>>
>>> Instead of turning off the individual color bars and putting a single bar
>>> at the bottom of the panel, this changes the way the levels are marked from
>>> using a color bar to having the numbers written on the plot, as can be seen
>>> by comparing the original plot in (b) below, and the resulting panel in (c).
>>> This not the style that I wanted, and this also adds an extra description
>>> under each plot, which takes up unnecessary space, and which is too small to
>>> be legible. What I wanted to do was put a single color bar under the whole
>>> panel plot, but this does not seem to work.
>>>
>>> 2). I want an overall title for the panel. I attempted to put this in
>>> using :
>>> resP_at_txString = "Zonally Averaged Zonal wind"
>>> However, no text string appears. When this did not work, I experimented
>>> with including more space at the top and the bottom, using these commands :
>>> resP_at_gsnPanelTop = 0.05 ; add some space at top
>>> resP_at_gsnPanelBottom = 0.05 ; add some space at
>>> bottom
>>>
>>> This did not appear to change anything. I am not sure how to get a single
>>> title at the top of all the panels.
>>>
>>> 3). I succeeded in removing the numbers and ticks marks on the bottom
>>> (x-axis) of each plot to save space between the plots, using the commands :
>>>
>>> res_at_tmXBLabelsOn = False ; do not draw bottom
>>> labels
>>> res_at_tmXBOn = False ; no bottom
>>> tickmarks
>>>
>>> However, I need to re-include the numbers and tick marks on the x-axis
>>> rows at the very bottom of the panel (the numbers should give latitude in
>>> degrees from pole to pole). I have not found any way of doing this.
>>> Additionally, I also want x-axis annotation on the bottom row to say
>>> "Latitude (degrees) ". Again, I am not sure how I can do this.
>>>
>>> 4). On the y-axis I want the y-axis annotation saying "Pressure", along
>>> with the tick marks and numbers on the left hand side only, rather than on
>>> every plot, to save space between plots. Similarly on the right hand side I
>>> want a single set of labels saying "Height (km)" along with the numbers and
>>> tick marks, rather than having this on every plot, so I can save space
>>> between the plots.
>>>
>>> 5. The plots are interpolated from hybrid levels to pressure/height
>>> levels using NCL function "vinth2p". However much I lower the uppermost
>>> interpolated level which is displayed on the plots using NCL function
>>> "gsn_csm_pres_hgt", there always seems to be some of the plots in the panel
>>> that have bits of white space left at the upper boundary, even though this
>>> white space is not there on the same plots when the highest level plotted is
>>> higher in altitude (although some of the other plots then have different
>>> bits of white space left at the top). I have experimented with adjusting the
>>> last parameter in vinth2p to make it False (i.e. no extrapolation for
>>> missing pressure values) and True (does have extrapolation for missing
>>> pressure values), but this seems to make no difference to the resulting
>>> plots. Is there any way I can get rid of these white spaces at the top of
>>> the plots ?. These do not look good for publication quality plots.
>>>
>
> _______________________________________________
> ncl-talk mailing list
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>

-- 
Arctic Region Supercomputing Center
http://weather.arsc.edu/

Received on Tue Apr 21 2009 - 07:24:39 MDT

This archive was generated by hypermail 2.2.0 : Tue Apr 21 2009 - 11:04:41 MDT