<div dir="ltr"><div>I have updated the code to use gsn_add_polymarker, which now appropriately scales the marker sizes. However, there are now annoying lines connecting (at random) some of the hollow circles. I would like to remove these lines.</div><div><br></div><div>Below is the code I added. Remove the last do loop that plots the data, and insert the following between x = ispan(1,dmax,1) and frame(wks):</div><div><br></div><div>  res@xyMarkerColor = "white"<br>  plot = gsn_csm_xy(wks,x,cdata,res)</div><div>  mkres = True<br>  dum_fill = new((/nset,dmax/),graphic)<br>  do i=0,nset-1<br>    do j=0,dmax-1<br>      mkres@gsMarkerIndex = markers(i)<br>      mkres@gsMarkerSizeF = marker_size(i,j)<br>      mkres@gsMarkerColor = colors(i,:)<br>;      plot@$unique_string("dum")$ = gsn_add_polymarker(wks,plot,x(j),cdata(i,j),mkres) ;works same as below<br>      dum_fill(i,j) = gsn_add_polymarker(wks,plot,x(j),cdata(i,j),mkres)<br>    end do<br>  end do<br>  draw(plot)<br><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Nov 7, 2018 at 12:24 PM Brandon Fisel <<a href="mailto:bjfisel@gmail.com">bjfisel@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><font color="#000">Hello,</font></div><div><font color="#000"><br></font></div><div><font color="#000">The below code is running on NCL version 6.4.</font></div><div><font color="#000"><br></font></div><div><font color="#000">I am attempting to adjust the marker sizes of hollow circles when they overlap on an XY plot. The "marker_size" variable in the script, is the algorithm that adjusts the marker sizes. Printing the marker_size output, shows the algorithm works correctly, placing into an array the adjusted marker sizes where the points will overlap.</font></div><div><font color="#000"><br></font></div><div><font color="#000">Unfortunately, the xyMarkerSizes is taking the first value in the array, as the marker size for that set. The resource information mentions xyMarkerSizes takes arrays for marker sizes, and that is not working.</font></div><div><font color="#000"><br></font></div><div><font color="#000">I have tested putting a static array of marker sizes, and that also does not work. Further, I have tested creating my own markers using NhlNewMarker, and this also is not working.</font></div><div><font color="#000"><br></font></div><div><font color="#000">How might I be able to adjust these marker sizes, so that if hollow circles overlap they adjust in size, allowing you to see each point?</font></div><div><font color="#000"><br></font></div><div><font color="#000">load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"<br>;*********************************************<br>begin<br>; number of sets and values<br>  nset = 3<br>  nval = 30<br>; generate random data<br>  random_setallseed(36484749, 9494848)<br>  lo = 0<br>  hi = 10<br>  data = tointeger(random_uniform(lo, hi, (/nset, nval/)))<br>  med_data = dim_median(data) ;median of data</font></div><div><font color="#000">; persistent values > set median<br>; output at last persistent value<br>  per_val = new((/nset,nval/),float,-999.)<br>  i = 1 ;persistence counter<br>  do k=0,nset-1 ;loop over each set<br>    i = 1 ;reset persistence counter<br>    do n=1,nval-1<br>      if (data(k,n-1).gt.med_data(k)) then ;first value<br>        if (data(k,n).gt.med_data(k)) then ;every value after first<br>          FLAG = True ;closure flag to check (and output persistence) index at end of array<br>          i = i+1 ;iterate by 1<br>          if (n.eq.nval-1) then ;end of array check<br>            if (FLAG) then ;if at the end of array<br>              per_val(k,n) = i ;output index if persistence exists at end of array<br>            end if<br>          end if<br>        else<br>          per_val(k,n-1) = i ;output index at end of persistent value<br>          i = 1 ;reset index to 1 when persistence ends<br>          FLAG = False ;disable closure flag (not at end of array yet)<br>        end if<br>      end if<br>    end do<br>  end do</font></div><div><font color="#000">; largest bin (largest persistent period)<br>  dmax = tointeger(max(per_val)) ;needs to be scalar</font></div><div><font color="#000">; bin persistent periods<br>  cdata = new((/nset, dmax/),"float",-999.)<br>  j_array = ispan(1,dmax,1)<br>  do i=0,nset-1<br>    do j=0,dmax-1<br>      cdata(i,j) = num(per_val(i,:).eq.j_array(j))<br>    end do<br>  end do</font></div><div><font color="#000">; set 0 to FillValue<br>; for determination of unique values (for markes<br>  cdata@_FillValue = 0.</font></div><div><font color="#000">; set up plot<br>  wks = gsn_open_wks("pdf","example")<br>  cmap = read_colormap_file("cb_9step") ;color map for markers<br>  colors = cmap(38:40,:) ;3 colors centered about the middle of the cmap<br>  markers = (/4,4,4/) ;marker shapes (hollow circles)<br>; rescale marker sizes where they overlap<br>; increase scale by 0.002<br>  marker_size = new((/nset,nval/),"float")<br>  marker_size = 0.007 ;default marker size<br>  do i=0,dmax-1<br>    do j=1,nset-1<br>      marker_size(j,i) = marker_size(j,i) + num(cdata(:j-1,i).eq.cdata(j,i))*0.002<br>    end do<br>  end do<br>  res = True<br>  res@gsnDraw = False<br>  res@gsnFrame = False<br>  res@tiMainString = "Example plot"<br>  res@xyMarkLineModes = "Markers"<br>  res@tiXAxisString = "Bins"<br>  res@tiYAxisString = "Frequency"<br>  res@trXMinF = 0<br>  res@trXMaxF = dmax+1<br>  res@trYMinF = 0<br>  res@trYMaxF = max(cdata)+1<br>  res@tmLabelAutoStride = True<br>  res@xyMonoMarker = False<br>  res@xyMonoMarkerColor = False<br>  res@xyMonoMarkerSize = False<br>; loop over and plot each binned value<br>  x = ispan(1,dmax,1)<br>  do i=0,nset-1<br>    res@xyMarkers = markers(i)<br>    res@xyMarkerSizes = marker_size(i,:)<br>;    res@xyMarkerColors = (/colors(i,:)/) ;this does not work<br>    res@xyMarkerColor= colors(i,:)<br>    if (i.eq.0) then<br>      plotA = gsn_csm_xy(wks,x,cdata(i,:),res)<br>    else<br>      plotB = gsn_csm_xy(wks,x,cdata(i,:),res)<br>      overlay(plotA,plotB)<br>    end if<br>    delete([/res@xyMarkers,res@xyMarkerSizes,res@xyMarkerColor/])<br>  end do<br>  draw(plotA)<br>  frame(wks)<br><div>end</div><div><br></div><div>Cheers,</div><div><br></div><div>Brandon</div></font></div></div>
</blockquote></div>