<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
<br><div><html>On Mar 18, 2008, at 6:12 PM, Stefan Gofferje wrote:</html><br class="Apple-interchange-newline"><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Hi,</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">could one of the developers maybe give some understanding how the</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">drawing process of GrADS works? I have a couple of charts in mind but no</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">idea how to realize them because I don't understand how GrADS handles</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">the parameters. Especially interesting for me is how to manipulate the</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">output of one parameter depending on the values of another in map</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">projections but also line and bar outputs.</div></blockquote>The maskout() and const() functions are particularly handy for this, but for specific help, you need to ask a more specific question. </div><div><br><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><span class="Apple-style-span" style="-webkit-text-stroke-width: -1; ">One example: Let's say we have gxout bar. E.g. the GFS model has one</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">parameter for the precipitation rate as mm and a couple of parameters</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">which indictae the precip type and can be 1 or 0, like CRAIN, CSNOW,</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">CICEP...</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">How would I draw bars which height indicates the precip strenght but the</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">color changes like blue for rain, cyan for snow, red for ice pellets and</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">such?</div></blockquote><div>Here's how it's done for the meteograms: </div><div><html><br></html><div>'define ptot  = const(0.5*(p+abs(p)),0,-u)'</div><div><html>'define pconv = const(0.5*(pc+abs(pc)),0,-u)'</html><div><br></div></div></div><div><html>* Rain (Total Precipitation)</html><html>'set gxout bar'</html><html>'set barbase 0'</html><html>'set bargap 50'</html><html>'set ccolor 42'</html><html>'d ptot'</html><div><br></div><div><html>* Snow</html><html>'set ccolor 44'</html><html>'d ptot*csnow'</html><html><br></html><html>* Sleet (Freezing Rain)</html><html>'set ccolor 45'</html><html>'d ptot*cfrzr'</html><html><br></html><html>* Ice Pellets</html><html>'set ccolor 46'</html><html>'d ptot*cicep'</html><html><br></html><html>* Convective Precipitation</html><html>'set bargap 80'</html><html>'set ccolor 2'</html><html>'d pconv'</html><div><br></div></div></div><br><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">If I draw on a map, e.g. gxout grid, is there a possibility to draw own</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">stuff, like e.g. take the temperature and if it is below zero, draw an</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">exclamation mark at this grid position? How would I do this? </div></blockquote><div><br></div><div><br></div><div>Here's something quick -- it draws a '0' at every grid point where a variable has a certain range of value (e.g., for t between 299 and 300): </div><div>'set gxout grid'</div><div>'set grid off'</div><div>'set gridln off'</div><div>'set digsiz 0.01'   ;* this is small so the zeros will look like tiny dots</div><div>'d const(maskout(maskout(t,300-t),t-299),0)'</div><div><br></div><div>To draw an ascii character at a grid point location based on it's value, you'd have to write a script and go through the grid point-by-point, something like this: </div><div><html>xstart = 1</html><html>xend   = 360</html><html>ystart = 1</html><html>yend   = 181</html><html>'clear'</html><html>'set x 'xstart' 'xend</html><html>'set y 'ystart' 'yend</html><html>'set gxout contour'</html><html>'set clevs 0'</html><html>'d t*99999'   ;* this is to create a scaling environment -- no contours are drawn</html><html>var='t-300'</html><html>xx = xstart</html><html>while (xx &lt; xend)</html><html>  yy = ystart</html><html>  while (yy &lt; yend)</html><html>     'set x 'xx</html><html>     'set y 'yy</html><html>     'd 'var</html><html>      line = sublin(result,1)</html><html>      val = subwrd(line,4)</html><html>      if (val &lt; 0) </html><html>          'q gr2xy 'xx' 'yy</html><html>          positions = sublin(result,1)</html><html>          xpos = subwrd(positions,3)</html><html>          ypos = subwrd(positions,6)</html><html>          'set strsiz 0.05 0.05'                 ;* here's where you set the size of the ascii character you want to draw</html><html>          'draw string 'xpos' 'ypos' ~'      ;* here's where you change the ascii character you want to use as a mark</html><html>      endif</html><html>    yy = yy + 1</html><html>  endwhile</html><html>  xx = xx + 1</html><html>endwhile</html><div><br></div></div><br><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Can I</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">define ownfunction and then just say set gxout grid; d ownfunction?</div></blockquote>sure, if ownfunction is a valid GrADS expression. The syntax for defining variables is:</div><div>'define var = 'ownfunction</div><div>or the implied define:</div><div>'var = 'ownfunction</div><div><br></div><div><br></div><div>Hope this gives you some ideas.</div><div>--Jennifer</div><div><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div><br class="khtml-block-placeholder"></div><br class="Apple-interchange-newline"></span></span></span> </div><br></body></html>