[gradsusr] Question about COLA/IGES legend and lower title bar

Kevin M Levey klevey at customweather.com
Wed Jun 11 18:52:20 EDT 2014


Hi Jennifer

MANY thanks for your excellent explanation (as usual). I just find your COLA/IGES plots to be very professional looking and wanted to change the style of the plots we produce within our own company. I’ve spent many an hour figuring out the intricacies of imagemagik and  GRaDs and was successful in producing output as such: 



As you well know, plenty of trial and error and a whole lot of man hours to figure that all out. I’ve not used the latest version of Grads to try and do the same things without all the imagemagik processing fuss. 

Thanks for the code for the legend. 

Regards,

Kevin M Levey, MSc in Oceans and Atmospheric Sciences (University of Cape Town)
Vice President of Operations
CustomWeather, Inc.
San Francisco, California, USA

"Taking the World by Storm!"

http://www.customweather.com
http://www.myforecast.com
http://www.1stweather.com

cell: 415-794-0411
work: 415-777-3566
email: klevey at customweather.com

On Jun 11, 2014, at 2:30 PM, Jennifer Adams <jma at COLA.IGES.ORG> wrote:

> Hi, Kevin -- 
> I'm glad you are happy with version 2.1 and it didn't take too much work to incorporate gxprint. It is faster than writing out the metafile and running gxyat separately. 
> 
> I have a set of background images with the topography that are a fixed size, that I am unable to re-create because of deprecated features in the imagemagik routine 'combine'. There probably is a way to do it with cairo, but I haven't had time to figure it out. So I am stuck with that image size and aspect ratio, unless I want to abandon the topography background, which I am not willing to do. I use mpvals to get the plot to fill the page and 'set parea 0 10.98 0 8.5'.  
> 
> It can be tricky to get the mpvals just right to fill the page, but I am stuck with that technique because of the background image. There is a better way to do this -- draw the plot in the domain you want, use 'q gxinfo' to get the aspect ratio of the plot, then restart grads with -a using that ratio… But I digress. 
> 
> The title bar is drawn on top of the finished graphic with 'draw recf', and the font is LiberationSans-Regular. The color fan has a big white mark (style 3) drawn underneath it to mask out the plot in the corner. 
> 
> I create each panel using gxprint with -b and -t options, and then I use pngquant to shrink the filesize. ImageMagik is not a part of the operational scripts. The subroutine to draw the fan-shaped color bar is below. Note there are some global variables in there that will not work right if you run it as is. 
> --Jennifer
> 
> * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
> * Draws a fan-shaped color bar in the upper right corner 
> 
> function carc(panel)
> ro = 1.04      ;* outer radius for colors
> ri = 0.50      ;* inner radius for colors
> rt = 1.10      ;* radius for text
> rti = 1.0      ;* radius for inner text
> * xc,yc = coordinates of center of circle (a.k.a. the upper right hand corner of plot)
> if (_regn='hemi' | _regn='shemi')
>   xc = 8.5
> else
>   xc = 10.98
> endif
> yc = 8.5
> 
> * read the shading and contour info from _shades
> ll = 1
> data = sublin(_shades,1)
> ll = subwrd(data,5)
> mm = 1
> while (mm <= ll)
>   mmp1 = mm + 1
>   data = sublin(_shades,mmp1)
>   col.mm = subwrd(data,1)
>   if (col.mm < 0)
>     col.mm = 999
>   endif
>   lim.mm = subwrd(data,3)
>   if (lim.mm = '>')
>     lim.mm = ' '
>     break
>   endif
>   mm = mm + 1
> endwhile
> 
> * Cover up the corner of the plot 
> if (_regn!='hemi' & _regn!='shemi')
>  'set line 561'  ; 'draw mark 3 'xc' 'yc' 2.8'  ;* filled circle 
>  'set line 1 1 3'; 'draw mark 2 'xc' 'yc' 2.8'  ;* open circle outline
> endif
> 
> * dd = amount of arc for colors to subtend (90deg)
> * id = position on unit circle at which to start (270deg or bottom)
> dd = 3.1415926*0.5/ll
> id = 3.1415926*1.50
> * calculate starting points
> 'd 'ro'*cos('id')' ; xfo = subwrd(result,4) + xc
> 'd 'ro'*sin('id')' ; yfo = subwrd(result,4) + yc
> 'd 'ri'*cos('id')' ; xfi = subwrd(result,4) + xc
> 'd 'ri'*sin('id')' ; yfi = subwrd(result,4) + yc
> 
> * For each color, calculate new points for color fills and text
> mm = 1 
> while(mm<=ll)    
>   id = id - dd
>   'd 'ro'*cos('id')' ; xlo = subwrd(result,4) + xc
>   'd 'ro'*sin('id')' ; ylo = subwrd(result,4) + yc
>   'd 'ri'*cos('id')' ; xli = subwrd(result,4) + xc
>   'd 'ri'*sin('id')' ; yli = subwrd(result,4) + yc
>   'd 'rt'*cos('id')' ; xft = subwrd(result,4) + xc
>   'd 'rt'*sin('id')' ; yft = subwrd(result,4) + yc
>   if (panel=7)
>     'd 'rti'*cos('id')';  xfti = subwrd(result,4) + xc
>     'd 'rti'*sin('id')';  yfti = subwrd(result,4) + yc
>   endif
>   did = id*180/3.1415926 - 180    ;* rotation angle for text
> 
> * Draw the color wedge
>   'set line 'col.mm
>   'draw polyf 'xfi' 'yfi' 'xfo' 'yfo' 'xlo' 'ylo' 'xli' 'yli
> 
> * Draw the contour values
>   ck = subwrd(lim.mm,1) 
>   if (ck != '')
>     'set string 1 r 4 'did
>     'set strsiz 0.08 0.11'
> 
>     if (panel=1 | (panel=3 & _tindx=1) | panel=4 | panel=5 )
> *     draw a label for every color wedge
>       'draw string 'xft' 'yft' 'lim.mm
>     endif
>     if (panel=2)
> *     draw label if it is divisible by 4 
>       fmod = math_fmod(lim.mm,4)
>       if (fmod=0)
>         'draw string 'xft' 'yft' 'lim.mm
>       endif
> *     draw a thick black 540 line on the thickness plot
>       if (lim.mm=546)
>         'set line 1 1 4'
>         'draw line 'xfi' 'yfi' 'xfo' 'yfo
>       endif
>     endif
>     if (panel=3 & _tindx>1)
> *     draw selected precip contour levels 
>       if (lim.mm=0.2 | lim.mm=1 | lim.mm=4 | lim.mm=8 | lim.mm=12 | lim.mm=18 | lim.mm=24 | lim.mm=30 | lim.mm=40 | lim.mm=50 | lim.mm=70 | lim.mm=90)
>         'set strsiz 0.08 0.10'
>         'draw string 'xft' 'yft' 'lim.mm
>       endif
>     endif
>     if (panel=6)
> *     draw selected pwat contour levels 
>       if (lim.mm=6 | lim.mm=12 | lim.mm=18 | lim.mm=24 | lim.mm=30 | lim.mm=36 | lim.mm=42| lim.mm=48 | lim.mm=54 | lim.mm=60)
>       'draw string 'xft' 'yft' 'lim.mm
>       endif
>     endif
> 
>     if (panel=7) 
> *     draw interior text labels
>       if (lim.mm=3)
>         'set string 1 l 4 'did
>         if (_tindx=1)
>           'draw string 'xfti' 'yfti' 800mb'
>         else
>           'draw string 'xfti' 'yfti' LOW'
>         endif
>       endif
>       if (lim.mm=9)
>         'set string 1 l 4 'did
>         if (_tindx=1)
>           'draw string 'xfti' 'yfti' 500mb'
>         else
>           'draw string 'xfti' 'yfti' MID'
>         endif
>       endif
>       if (lim.mm=15)
>         'set string 1 l 4 'did
>         if (_tindx=1)
>           'draw string 'xfti' 'yfti' 300mb'
>         else
>           'draw string 'xfti' 'yfti' HIGH'
>         endif
>       endif
> *     draw low contour label
>       if (lim.mm=1 | lim.mm=7 | lim.mm=13)
>         'set string 1 r 4 'did
>         if (_tindx=1)
>           'draw string 'xft' 'yft' 70'
>         else
>           'draw string 'xft' 'yft' 50'
>         endif
>       endif
> *     draw high contour label
>       if (lim.mm=5 | lim.mm=11 | lim.mm=17) 
>         'set string 1 r 4 'did
>         'draw string 'xft' 'yft' 90'
>       endif
>     endif
>   endif
> 
>   xfo = xlo
>   yfo = ylo
>   xfi = xli
>   yfi = yli
>   mm = mm + 1
> endwhile
> 'set string 1 l 1 0'
> 
> 
> On Jun 11, 2014, at 4:29 PM, Kevin M Levey wrote:
> 
>> WED 11JUN14: 1320PDT
>> 
>> This question is essentially for Jennifer Adams: 
>> 
>> I was wondering about a few items regarding  your COLA/IGES images. Example: 
>> 
>> <avnmr1.00hr.png>
>> 
>> Firstly, I am quite familiar with imagemagik to manipulate images etc, but was wondering 
>> 
>> 1] Are you cropping out everything outside the plot area to end up with your plot above and then adding (#2) the title bar below using imagemagik or is this new functionally in Grads 2.1 using gxprint -f, I’m thinking the latter ?
>> The reason I ask, is that it appears the font in the lower title area is from GRADS and was wondering if you are adding this as shaded box in the plot area and then adding the text and then doing gxprint -f ? 
>> 
>> 2] Is the legend bar that you use (#1) COLA/IGES propriety code or freely available? 
>> 
>> One of the BEST new features of GRDs 2.1 is transparency and the ability to now plot different *shaded*  layers.
>> 
>> Thanks for the great upgrades! 
>> 
>> Regards,
>> 
>> Kevin M Levey, MSc in Oceans and Atmospheric Sciences (University of Cape Town)
>> Vice President of Operations
>> CustomWeather, Inc.
>> San Francisco, California, USA
>> 
>> "Taking the World by Storm!"
>> 
>> http://www.customweather.com
>> http://www.myforecast.com
>> http://www.1stweather.com
>> 
>> cell: 415-794-0411
>> work: 415-777-3566
>> email: klevey at customweather.com
>> 
>> _______________________________________________
>> gradsusr mailing list
>> gradsusr at gradsusr.org
>> http://gradsusr.org/mailman/listinfo/gradsusr
> 
> --
> Jennifer M. Adams
> Center for Ocean-Land-Atmosphere Studies (COLA)
> 111 Research Hall, Mail Stop 2B3
> George Mason University
> 4400 University Drive
> Fairfax, VA 22030 
> 
> 
> 
> 
> 
> _______________________________________________
> gradsusr mailing list
> gradsusr at gradsusr.org
> http://gradsusr.org/mailman/listinfo/gradsusr

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://gradsusr.org/pipermail/gradsusr/attachments/20140611/f3a822fb/attachment-0001.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: CW027_RAINFALL_DAY_E_800x600_0.jpeg
Type: image/jpg
Size: 124595 bytes
Desc: not available
Url : http://gradsusr.org/pipermail/gradsusr/attachments/20140611/f3a822fb/attachment-0001.jpg 


More information about the gradsusr mailing list