[ncl-talk] Fwd: Could I add some FillPatterns effectsuchasobliquelines to a raster fill plot ?
Adam Phillips
asphilli at ucar.edu
Fri Aug 28 08:51:29 MDT 2015
Hi Lin,
That is a great work around for the issue. Thank you for sharing it with
the group!
Adam
On Fri, Aug 28, 2015 at 4:18 AM, xianglin72 <xianglin72 at icloud.com> wrote:
> Hi, Adams
>
>
> Thank you for the reply. I've resolve the problem using
> gsn_add_polygon.
>
>
> add some scripts in my scripts
>
> do j = 0,18
>
> do k = 0,nd-1
>
> if(sig(j,k).le.0.05) then
>
> print(j + " " + k + " " + sig(j,k))
>
> add_box( wks, plot(i), (/k*1.,j*1.-0.5/), 1.0, "black",
> 1.0, 17)
>
> else
>
> end if
>
> end do
>
> end do
>
>
> procedure add_box(wks,plot,ll[2],width,cname,oval,fpt) ; come from
> the newcolor_12.ncl , a example of NCL
>
> local xbox, ybox, gsres, dumstr
>
> begin
>
> xbox = (/ll(0),ll(0)+width,ll(0)+width,ll(0),ll(0)/)
>
> ybox = (/ll(1),ll(1),ll(1)+width,ll(1)+width,ll(1)/)
>
> print(" " + xbox)
>
> print(" " + ybox)
>
>
> gsres = True
>
> gsres at gsFillColor = cname
>
> gsres at gsFillOpacityF = oval ; opacity
>
> gsres at gsFillIndex = fpt ; Fill pattern ; I add the
> resource to set fillpattern
>
> dumstr = unique_string("gon")
>
> ;
>
> ; Adding it as an attribute is a sneaky way to
>
> ; make sure it "lives" outside this procedure.
>
> ;
>
> plot@$dumstr$ = gsn_add_polygon(wks,plot,xbox,ybox,gsres)
>
> end
>
>
> Lin
>
>
> 原始邮件
> *发件人:* Adam Phillips<asphilli at ucar.edu>
> *收件人:* xianglin72<xianglin72 at icloud.com>
> *抄送:* ncl-talk at ucar.edu<ncl-talk at ucar.edu>
> *发送时间:* 2015年8月26日(周三) 03:25
> *主题:* Re: Fwd: [ncl-talk] Could I add some FillPatterns
> effectsuchasobliquelines to a raster fill plot ?
>
> Hi Lin,
> I have come to the same conclusion that you have: That there are not
> enough grids for this method to effectively work. Previously this method
> has worked well on much larger grids but at this scale it is obviously not
> working. I have a test script that I passed on to a NCL developer for them
> to look at, but I am not hopeful. It looks like the only method that would
> work would be to make repeated targeted calls to gsn_add_polyline.
>
> To answer your question, you are passing in 3 lons and 19 lats, and the
> input sizes of those two arrays must be the same when using gsn_add_text.
> Try this:
>
> txres = True
> text = new(dimsizes(sig),"string")
> text = sig
> lon = (/0.5,1.5,2.5/)
> lat = ispan(0,18,1)
> txres at txFontHeightF = 0.010
> txres at txJust = "CenterCenter"
> dummy = new(dimsizes(arr),graphic)
> do gg = 0,2
> do hh = 0,18
> dummy(hh,gg) =
> gsn_add_text(wks,plot(i),text(hh,gg),lon(gg),lat(hh),txres)
> end do
> end do
>
> (The other option to the above coding would be to create 3 arrays
> (lat,lon, and text) of size 57 containing the appropriate values. Then a
> single call to gsn_add_text would suffice.)
>
> I put the above coding into my test script and I got the attached plot.
> Note that if you are paneling that you will not want to overwrite the dummy
> array each time through.. If you have 3 panels dummy could be an array of
> size (3,19,3) instead of above where it is just a (19,3).
>
> Hope that all helps.
> Adam
>
>
> On Tue, Aug 25, 2015 at 4:00 AM, xianglin72 <xianglin72 at icloud.com> wrote:
>
>> Hi, Adams
>>
>>
>> Thank you for the reply. I've tried another some times, but failed
>> to get something. I don't know how the NCL
>>
>> make the fill pattern exactly, and I guess that there is not enough
>> grids (only 19*3 grids ) in my plot, so NCL can not
>>
>> deal with few grids correctly.
>>
>> Here below is the data used in the first subplot , and you can see
>> that no fill pattern were done for the 3rd column
>>
>> values. In fact, I want all the grids with the values less than 0.05 to
>> be filled with oblique lines.
>>
>>
>> significance values for the trend
>>
>> 0.055 0.055 0.000
>>
>> 0.000 0.000 0.000
>>
>> 0.000 0.055 0.000
>>
>> 0.000 0.007 0.000
>>
>> 0.055 0.055 0.000
>>
>> 0.000 0.001 0.000
>>
>> 0.055 0.000 0.000
>>
>> 0.055 0.000 0.000
>>
>> 0.000 0.055 0.000
>>
>> 0.000 0.055 0.000
>>
>> 0.000 0.037 0.000
>>
>> 0.002 0.003 0.000
>>
>> 0.000 0.055 0.000
>>
>> 0.000 0.055 0.000
>>
>> 0.000 0.055 0.001
>>
>> 0.002 0.055 0.055
>>
>> 0.001 0.055 0.000
>>
>> 0.000 0.055 0.000
>>
>> 0.000 0.000 0.002
>>
>> Besides, I want to ask one more question:
>>
>> I add the follwoing scripts to post all the values to the corresponding
>> cells (so that I can understand why NCL can not contour correctly) :
>> res at cnFillOn = False
>> plot(i) = gsn_csm_contour(wks, sig, res)
>> text = new(dimsizes(sig),"string")
>> text = sig
>> lon = ispan(1,3,1)
>> lat = ispan(1,19,1)
>> txres = True
>> txres at txFontHeightF = 0.015
>> txres at txJust = "CenterLeft"
>> dummy = gsn_add_text(wks,plot(i),text,lat,lon,txres)
>> however, I got some error message as below:
>> fatal:Dimension sizes of left hand side and right hand side of assignment
>> do not match
>> fatal:["Execute.c":7743]:Execute: Error occurred at or near line 5659 in
>> file $NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl
>> fatal:["Execute.c":7743]:Execute: Error occurred at or near line 118 in
>> file dtr_sat_raster.ncl
>>
>>
>>
>> Lin
>>
>>
>> 原始邮件
>> *发件人:* Adam Phillips<asphilli at ucar.edu>
>> *收件人:* xianglin72<xianglin72 at icloud.com>
>> *抄送:* ncl-talk at ucar.edu<ncl-talk at ucar.edu>
>> *发送时间:* 2015年8月25日(周二) 02:04
>> *主题:* Fwd: [ncl-talk] Could I add some FillPatterns effect
>> suchasobliquelines to a raster fill plot ?
>>
>> Hi Lin,
>> (ncl-talk included)
>> Method #2 is the way to go, and I still think you should be able to do it
>> by modifying and using trial and error on the following lines:
>> sig = where(sig.le.0.05,sig,0.06)
>> res2 at cnLevels = 0.05
>>
>> For instance, I would try the following:
>> sig = where(sig.le.0.05,sig,0.15)
>> res2 at cnLevels = 0.045
>>
>> and if that doesn't work try this:
>> sig = where(sig.le.0.05,sig,0.055)
>> res2 at cnLevels = 0.045
>>
>> You should notice the range of the the pattern fill changing.
>>
>> You might have to try modifying the above two settings several times
>> before you get it right, but it should be quite possible to match up the 2
>> plots.
>>
>> I am also wondering whether this line is correct:
>> plot(i) = gsn_csm_contour(wks, y, res)
>> I think it should be:
>> plot(i) = gsn_csm_contour(wks, sig, res)
>>
>> as you want to compare the exact same field raster and color filled to
>> one pattern filled. The array y is based on this line:
>> y = where(sig.le.0.05,dtr,-999.) ; significant trend
>> and contains dtr data as opposed to sig data.
>>
>> If you cannot get the plot or do not wish to go through the trial and
>> error process you can attempt to draw polylines through each significant
>> grid box, but as I indicated previously this can get tedious.
>>
>> If you have any further questions please respond to ncl-talk.
>> Adam
>>
>> On Sun, Aug 23, 2015 at 10:13 AM, xianglin72 <xianglin72 at icloud.com>
>> wrote:
>>
>>> Hi, Adams,
>>>
>>>
>>> I've tried for sometimes, but it seems that this problem is
>>> unresolvable.
>>>
>>>
>>> 1、
>>>
>>> res at cnFillMode = "RasterFill"
>>>
>>> plot(i) = gsn_csm_contour(wks, y, res)
>>> opt = True
>>> opt at gsnShadeFillType = "pattern" ; pattern fill
>>> opt at gsnShadeMid = 3 ; use pattern #2
>>> plot(i) = gsn_contour_shade(plot(i), -0.01, 0.05, opt)
>>> ……..
>>> no fillPattern will be done.
>>>
>>> 2、
>>> y = where(sig.le.0.05,dtr,-999.) ; significant
>>> trend
>>> y at _FillValue = -999.
>>> res at cnFillMode = "RasterFill" ; “CellFill“
>>> plot(i) = gsn_csm_contour(wks, y, res)
>>>
>>> sig = where(sig.le.0.05,sig,0.06)
>>> res2 at cnFillMode = "AreaFill" ;"AreaFill"
>>> res2 at cnMonoFillPattern = True
>>> res2 at cnFillPattern = 3
>>> res2 at cnMonoFillColor = False
>>> res2 at cnFillColors = (/"black","black","white","white"/)
>>> res2 at cnLevelSelectionMode = "ExplicitLevels"
>>> res2 at cnLevels = (/0.,0.05,0.1/)
>>> iplot = gsn_csm_contour(wks, sig, res2)
>>> overlay(plot(i),iplot)
>>> …...
>>> Then the cnFillPattern can not be shown as preferred. (see the
>>> attached fig file, All the significant values have been raster filled in
>>> the corresponding rectangular cell, all the shaded lines should also be
>>> added within these cells as expected, )
>>>
>>>
>>> Thanks
>>>
>>> LIn
>>>
>>>
>>>
>>>
>>>
>>>
>>> 原始邮件
>>> *发件人:* Adam Phillips<asphilli at ucar.edu>
>>> *收件人:* xianglin72<xianglin72 at icloud.com>
>>> *抄送:* ncl-talk at ucar.edu<ncl-talk at ucar.edu>
>>> *发送时间:* 2015年8月23日(周日) 12:24
>>> *主题:* Re: [ncl-talk] Could I add some FillPatterns effect such
>>> asobliquelines to a raster fill plot ?
>>>
>>> Hi Lin,
>>> You are correct, you cannot raster fill and pattern fill at the same
>>> time. However, I remembered that I replied to someone with this issue in
>>> April. See the response here:
>>> http://mailman.ucar.edu/pipermail/ncl-talk/2015-April/002370.html
>>> In short: you need to manipulate the values of the boxes that are not
>>> hatched so that the pattern fill only covers the boxes that you want. Note
>>> in the example coding that the user had _FillValue(s); you may or may not
>>> have that set for the boxes you do not want pattern filled.
>>>
>>> The above referenced method requires trial and error, but it is possible
>>> to do what you want.
>>>
>>> An alternative to the above would be to make many calls to
>>> gsn_add_polyline, drawing a line across each grid box, but that method may
>>> be intensive to implement as well.
>>>
>>> Good luck. If you have any other inquires please respond to ncl-talk.
>>> Adam
>>>
>>> On Aug 21, 2015, at 10:05 PM, xianglin72 <xianglin72 at icloud.com> wrote:
>>>
>>> Hi, Adam
>>>
>>>
>>> Thank you the reply. I've tried what you have told before sending
>>> the first mail( see the attached script), however, I can not get what you
>>> and I expect ( see the attached plot).
>>>
>>> I've checked the explaination on the resource of "raster fill",
>>> and found the following :
>>>
>>>
>>> The following resources can be used to control fill features when
>>> *cnFillMode* is set to RasterFill:
>>>
>>> - *cnFillColors*
>>> - *cnGridBoundFillColor*
>>> - *cnMissingValFillColor*
>>> - *cnOutOfRangeFillColor*
>>> - *cnRasterSmoothingOn*
>>> - *cnRasterMinCellSizeF*
>>> - *cnRasterSampleFactorF*
>>> - *cnRasterCellSizeF*
>>>
>>>
>>> So you can find that the cnMonoFillColor and cnFillPattern can not
>>> work for this mode, which I've said in the first mail.
>>>
>>>
>>> Since the "AreaFill" mode can not get the same effect and the "cnFillPattern"
>>> resource can not be used for "CellFill" and
>>>
>>> "rasterfill" mode, I still don't know how to add some shading effect for
>>> the chosen raster grids.
>>>
>>>
>>> Thanks
>>>
>>>
>>> Lin
>>>
>>>
>>>
>>>
>>> 原始邮件
>>> *发件人:* Adam Phillips<asphilli at ucar.edu>
>>> *收件人:* xianglin72<xianglin72 at icloud.com>
>>> *抄送:* ncl-talk at ucar.edu<ncl-talk at ucar.edu>
>>> *发送时间:* 2015年8月22日(周六) 02:19
>>> *主题:* Re: [ncl-talk] Could I add some FillPatterns effect such as
>>> obliquelines to a raster fill plot ?
>>>
>>> Hi Lin,
>>> You can always do an overlay where you create two images:
>>> 1) Create a RasterFill plot with colors. (You already have this plot.)
>>> 2) Create a RasterFill plot with pattern fill (not color fill).
>>>
>>> Then you would overlay 2) on 1) using the overlay procedure.
>>>
>>> See example #10 here:
>>> http://www.ncl.ucar.edu/Applications/overlay.shtml#ex10
>>>
>>> Note that for plot 2) (or plot_shade in example 10) you would want to
>>> set the following resources:
>>> res at cnFillPattern = 3
>>> res at cnMonoFillColor = True
>>> res at lbLabelBarOn = False ; no labelbar needed
>>>
>>> Available fill patterns:
>>> http://www.ncl.ucar.edu/Document/Graphics/Images/fillpatterns.png
>>>
>>> Hope that helps. If not, please respond to ncl-talk.
>>> Adam
>>>
>>>
>>>
>>>
>>> On Fri, Aug 21, 2015 at 8:44 AM, xianglin72 <xianglin72 at icloud.com>
>>> wrote:
>>>
>>>> Hi, all
>>>>
>>>>
>>>> I've made a raster fill plot ( see the attachment), and I want to
>>>> add some FillPattern effect for some chosen cells in the plot.
>>>>
>>>>
>>>> However, I found that the resource of cnFillPattern can not work for
>>>> the raster fill plot. How could I do to add some effect,
>>>>
>>>>
>>>> for example, some oblique lines to the chosen rectanglar cells?
>>>>
>>>>
>>>>
>>>> Thanks
>>>>
>>>>
>>>>
>>>> Lin
>>>>
>>>>
>>>> _______________________________________________
>>>> ncl-talk mailing list
>>>> ncl-talk at ucar.edu
>>>> List instructions, subscriber options, unsubscribe:
>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>
>>>>
>>>
>>>
>>> --
>>> Adam Phillips
>>> Associate Scientist, Climate and Global Dynamics Laboratory, NCAR
>>> www.cgd.ucar.edu/staff/asphilli/ 303-497-1726
>>>
>>> <http://www.cgd.ucar.edu/staff/asphilli>
>>>
>>> <test2.eps>
>>>
>>> <dtr_sat_raster.ncl>
>>>
>>>
>>
>>
>> --
>> Adam Phillips
>> Associate Scientist, Climate and Global Dynamics Laboratory, NCAR
>> www.cgd.ucar.edu/staff/asphilli/ 303-497-1726
>>
>> <http://www.cgd.ucar.edu/staff/asphilli>
>>
>
>
>
> --
> Adam Phillips
> Associate Scientist, Climate and Global Dynamics Laboratory, NCAR
> www.cgd.ucar.edu/staff/asphilli/ 303-497-1726
>
> <http://www.cgd.ucar.edu/staff/asphilli>
>
--
Adam Phillips
Associate Scientist, Climate and Global Dynamics Laboratory, NCAR
www.cgd.ucar.edu/staff/asphilli/ 303-497-1726
<http://www.cgd.ucar.edu/staff/asphilli>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20150828/594f9fcf/attachment.html
More information about the ncl-talk
mailing list