[ncl-talk] Looking to create a scatterplot of x vs y colored based on value of z

Dennis Shea shea at ucar.edu
Thu Jun 7 10:52:55 MDT 2018


The attached is similar to Mary's example. It also shows how to add a label
bar with text.
====
Key features
====
[snip]
   catTypes   = (/ "invalid" \
; 0
                         , "marine"  , "p. marine"     , "dust" , "dust
mixture" \    ; 1,2,3,4
                         , "clean/bg", "p. continental", "smoke",
"volcanic"     /) ; 5,6,7,8
   nCatTypes  =
dimsizes(catTypes)                                                      ;
nCatTypes=9

   catColors  = (/ "gray90"  \
; 0
                         ,  "blue", "aquamarine", "yellow", "orange"
\              ; 1,2,3,4
                         , "green",        "red", "black" , "brown"
/)                   ; 5,6,7,8
   nCatColors =
dimsizes(catColors)                                                   ;
nCatColors=9
[snip]


*map  = gsn_csm_map(wks, res)                     ; BLANK map*
;---http://www.ncl.ucar.edu/Document/Graphics/Images/markers.png

   polyres                   = True
   polyres at gsMarkerIndex     =  1                   ; period
   polyres at gsMarkerSizeF     = 0.05

;---For each of the aerosol categories add the appropriate colored marker
;---Must check for a category where no values were encountered (=>
_FillValue)

   object = new(nCatTypes,"graphic")                ; graphic object place
holder
   do k=0,nCatTypes-1
      *ji        := ind(data.eq.k)                   ; indices will change
each iteration*
      nji        = dimsizes(ji)
      if (nji.gt.1 .or. .not.ismissing(ji)) then
          polyres at gsMarkerColor  = catColors(k)
          object(k)  =
gsn_add_polymarker(wks,map,longitude(ji),latitude(ji),polyres)
      end if
   end do
   draw(map)

;---Explicitly create and locate label bar based on 'map' ViewPort
information

  [ see script]

On Thu, Jun 7, 2018 at 8:51 AM, Mary Haley <haley at ucar.edu> wrote:

> Hi Tyler,
>
> You unfortunately can't use xyMarkerColor in this way, where you give it a
> bunch of markers and then an array of colors to apply to each marker.  The
> XY plotting in NCL wants to apply the same color to a set of markers.
>
> One way you can do this is to create a blank plot with the correct axes
> limits, and then use gsn_polymarker. I did this in a hurry because I have a
> meeting to go to, but see the attached.
>
> You may also want to visit this page for some more examples (search for
> "marker"):
>
> http://www.ncl.ucar.edu/Applications/polyg.shtml
>
> --Mary
>
>
> On Wed, Jun 6, 2018 at 4:11 PM, Tyler Herrington <therring at uwaterloo.ca>
> wrote:
>
>> Good Afternoon,
>>
>> I am looking to create a scatterplot of Change in Tree Fraction vs Change
>> in Grass Fraction where the scatterplot values are colored based on their
>> change in albedo value.
>>
>> Each of Tree, Grass and Albedo have been converted into 1D arrays with
>> 6480 values
>>
>> Albedo values vary between -0.415 and +0.153, and I am looking to create
>> a colormap with 19 colors from the GMT_polar colormap.
>>
>> My script works ok for cases where z = ind() returns a single value
>> (which is the case when i = 0), however it fails if z returns 2 or more
>> values (for example when i=1), and thus I was hoping to put this out to see
>> if anyone had any suggestions on how to fix this problem?
>>
>> begin
>>
>> ;********************************************
>> ; Read in Tundra and Boreal Albedo Feedbacks
>> ;********************************************
>>
>> dirA = "/praid/users/herringtont/Caldwell_2016/GFDL_Albedo/albedo/"
>> dirV = "/praid/users/herringtont/Caldwell_2016/Vegetation_Data/"
>>
>> A1 = dirA+"albedo_Amon_GFDL-ESM2G_rcp45_r1i1p1_208001-209912_avg_
>> diff_LandOnly_NH.nc"
>> T1 = dirV+"treeFrac_Lmon_GFDL-ESM2G_rcp45_r1i1p1_diff_Frac_LandOn
>> ly_NH.nc"
>> G1 = dirV+"grassFrac_Lmon_GFDL-ESM2G_rcp45_r1i1p1_diff_Frac_LandO
>> nly_NH.nc"
>>
>> A2 = addfile(A1,"r")
>> T2 = addfile(T1,"r")
>> G2 = addfile(G1,"r")
>>
>> ALB = A2 ->rsuscs(4,:,:)
>> Grass = G2 ->grassFrac(4,:,:)
>> Tree = T2 ->treeFrac(4,:,:)
>>
>> ;********************************************
>> ; Reshape ALB, Tree, and Grass from 2D to 1D
>> ;********************************************
>>
>> ALB1d = ndtooned(ALB)
>> Tree1d = ndtooned(Tree)
>> Grass1d = ndtooned(Grass)
>>
>> ;************************************
>> ; Create Color Scale for Scatterplot
>> ;************************************
>>
>> dALB = dimsizes(ALB1d)
>> colorALB = new(dALB,"integer")
>> clrs = (/2,3,4,5,6,7,8,9,10,12,13,14/)
>>
>> i = 0
>> do while (i.le.10)
>>
>> j = i-1
>>
>> if (i.eq.0) then
>>
>>   VAL1 = -0.45
>>   VAL2 = -0.40
>>
>> else
>>   VAL1 = -0.35+(0.05*j)
>>   VAL2 = -0.30+(0.05*j)
>> end if
>>
>> print(VAL1)
>> print(VAL2)
>>
>> z = ind(ALB1d.gt.VAL1.and.ALB1d.lt.VAL2)
>>
>> print(z)
>> print(i)
>>
>> colorALB(z) = clrs(i)
>>
>> i = i+1
>>
>> end do
>>
>> print(colorALB)
>> ;******************************************************
>> ; Create April Mean Veg vs Alb Change Scatterplot
>> ;******************************************************
>>
>> wks = gsn_open_wks("png","GFDL_Veg_Alb_Apr_Scatter_Color")
>>
>> gsn_define_colormap(wks,"GMT_polar")
>>
>> res = True
>> res at gsnDraw            = False        ; Don't draw plot or advance
>> res at gsnFrame           = False        ; frame. Will do this later.
>>
>> res at tiXAxisString = "Change in Tree Fraction"
>> res at tiYAxisString = "Change in Grass Fraction"
>>
>>
>> square = NhlNewMarker(wks, "y", 35, 0.0, 0.0, 1., 0.5, 0.)
>>   res at xyMarkLineMode     = "Markers"
>>   res at xyMarkerThicknessF = 2.5
>>   res at xyMarkerColor     = colorALB
>>   res at xyMarker           = square     ; this is a filled square
>>
>>
>> plot = gsn_csm_xy(wks,Tree1d,Grass1d,res)
>>
>>   maximize_output(wks,False)
>>
>> system("mv *.png /home/herringtont/Caldwell_2016/figures/scatterplot")
>>
>>
>> end
>>
>>
>>
>> here is the printout from the script when I execute it currently:
>>
>> Variable: VAL1
>> Type: float
>> Total Size: 4 bytes
>>             1 values
>> Number of Dimensions: 1
>> Dimensions and sizes:   [1]
>> Coordinates:
>> (0)     -0.45
>>
>>
>> Variable: VAL2
>> Type: float
>> Total Size: 4 bytes
>>             1 values
>> Number of Dimensions: 1
>> Dimensions and sizes:   [1]
>> Coordinates:
>> (0)     -0.4
>>
>>
>> Variable: z
>> Type: integer
>> Total Size: 4 bytes
>>             1 values
>> Number of Dimensions: 1
>> Dimensions and sizes:   [1]
>> Coordinates:
>> (0)     3265
>>
>>
>> Variable: i
>> Type: integer
>> Total Size: 4 bytes
>>             1 values
>> Number of Dimensions: 1
>> Dimensions and sizes:   [1]
>> Coordinates:
>> (0)     0
>>
>>
>> Variable: VAL1
>> Type: float
>> Total Size: 4 bytes
>>             1 values
>> Number of Dimensions: 1
>> Dimensions and sizes:   [1]
>> Coordinates:
>> (0)     -0.35
>>
>>
>> Variable: VAL2
>> Type: float
>> Total Size: 4 bytes
>>             1 values
>> Number of Dimensions: 1
>> Dimensions and sizes:   [1]
>> Coordinates:
>> (0)     -0.3
>> fatal:Number of dimensions on right hand side do not match number of
>> dimension in left hand side
>> fatal:["Execute.c":8640]:Execute: Error occurred at or near line 61 in
>> file Albedo_Veg_GFDL_Scatter.ncl
>>
>>
>>
>> Thank you for your help,
>>
>> Sincerely,
>>
>> Tyler Herrington, MSc
>> PhD Student (Climate Science)
>> Geography and Environmental Management
>> University of Waterloo
>>
>>
>> _______________________________________________
>> ncl-talk mailing list
>> ncl-talk at ucar.edu
>> List instructions, subscriber options, unsubscribe:
>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>
>>
>
> _______________________________________________
> ncl-talk mailing list
> 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/20180607/ea9d968a/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: CATS.polymarker_labelbar.ncl
Type: application/octet-stream
Size: 6354 bytes
Desc: not available
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20180607/ea9d968a/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: CATS_poly_labelbar_0_2.png
Type: image/png
Size: 153829 bytes
Desc: not available
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20180607/ea9d968a/attachment.png>


More information about the ncl-talk mailing list