[ncl-talk] emphasize every parts of a line with different colors according to its y value.
Alan Brammer
abrammer at albany.edu
Fri Dec 30 13:07:57 MST 2016
my bad, forgot to switch out one of my personal shortcuts in the demo function.
< df(wks, plot)
===
> draw(plot)
> frame(wks)
> On 30 Dec 2016, at 14:59, Alan Brammer <abrammer at albany.edu> wrote:
>
> ok, so there are multiples ways to plot a line.
> Here’s my method which is over complicated for a single line but has massive speed benefits if you want to plot multiple lines.
>
> Similar to the previous replies, you can use the relatively undocumented gsSegments and gsColors resources to do pretty much what Rick describes but with better scaleability.
>
> Attached function with hopefully sufficient comments to explain whats going on and includes an inline demo function at the bottom I put together a while back.
>
> To run the demo either load the script and call colored_line_demo() or comment out lines 127/128 and then `ncl add_colored_line.ncl` will run it as the main script.
>
> Note to devs, attached in this script is an extended version of get_color_index() to accept an array of "value". Could this be included in the main function, it's a trivial edit and retains backwards compatibility.
>
>
> <add_colored_line.ncl>
> Alan.
>
>
>> On 30 Dec 2016, at 14:21, Guido Cioni <guidocioni at gmail.com <mailto:guidocioni at gmail.com>> wrote:
>>
>> I was going to reply with a similar recipe :)
>>
>> Basically, when drawing the line you have to split every segment and assign a color based on the average value of the y in that segment.
>> This is just an hint, you will have to complete the code.
>>
>> Assuming you have x,y which are your data values:
>>
>> levels=fspan(min(y), max(y), 20) ; define the levels for the colors, you can change this but it will always depend on the number of segments
>>
>> cmap = read_colormap_file("amwg_blueyellowred") ; define the colormap that you want to use
>>
>> do i=0,dimsizes(y)-1 ; loop over the segments
>> res at xyLineColors=GetFillColor(levels,cmap,avg((/y(i),y(i+1)/)))
>> gsn_polyline(wks,plot,(/x(i),x(i+1)/),(/y(i),y(i+1)/),lres)
>> end do
>>
>> Guido Cioni
>> http://guidocioni.altervista <http://guidocioni.altervista/>.org
>>
>>> On 30 Dec 2016, at 17:35, Rick Brownrigg <brownrig at ucar.edu <mailto:brownrig at ucar.edu>> wrote:
>>>
>>> Hi,
>>>
>>> I don't know of any way of doing this other than to draw the line piecewise. What about something like:
>>>
>>> datadims = dimsizes(data) ; assuming your data is 2xN
>>> numlinesegs = datadims(1) - 1
>>> linesegs = new((/ numlinesegs/), graphic)
>>> do i=1,numlinesegs
>>> color = ....appropriate logic to determine the color here...
>>> res at gsLineColor = color
>>> linesegs(i) = gsn_add_polyline(wks, plot, data(0, i-1:i), data(1, i-1:i), res)
>>> end do
>>>
>>> This is not particularly efficient, and there may be better ways of doing this, but that should work.
>>>
>>> HTH...
>>> Rick
>>>
>>>
>>> On Fri, Dec 30, 2016 at 12:48 AM, grace <313695096 at qq.com <mailto:313695096 at qq.com>> wrote:
>>> Hi:
>>> All,I am trying to draw a line that emphasize every parts of it with different colors.
>>> I have found the example xy_12.ncl which highlight the wanted part by split the data.
>>> But I want to draw a line which have different colors according to its y numberical value,just like the plot below.
>>> <0356412F at 5DA70B25.65116658.png>
>>> If I split the data ,that would be a huge work.
>>> Have anybody drawed plot like this ?Any information will be appreciated.
>>>
>>>
>>>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu <mailto:ncl-talk at ucar.edu>
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk <http://mailman.ucar.edu/mailman/listinfo/ncl-talk>
>>>
>>>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu <mailto:ncl-talk at ucar.edu>
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk <http://mailman.ucar.edu/mailman/listinfo/ncl-talk>
>>
>> _______________________________________________
>> ncl-talk mailing list
>> ncl-talk at ucar.edu <mailto:ncl-talk at ucar.edu>
>> List instructions, subscriber options, unsubscribe:
>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20161230/c9704653/attachment.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: add_colored_line.ncl
Type: application/octet-stream
Size: 4919 bytes
Desc: not available
Url : http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20161230/c9704653/attachment.obj
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20161230/c9704653/attachment-0001.html
More information about the ncl-talk
mailing list