[GRASS-user] Triangle plot with correspoding map
Martin Wegmann
wegmann at biozentrum.uni-wuerzburg.de
Fri Nov 30 06:17:05 EST 2007
On Friday 30 November 2007 05:31:03 Glynn Clements wrote:
> Hamish wrote:
> > > a colleague wanted to display 3 different attributes (e.g. bare soil,
> > > vegetation, shadow), so far he did a map with a triangle plot manually
> > > (see attachment by M. Schramm).
> > >
> > > And he asked (and I wonder) if it would be possible to generate
> > > something along these lines using GRASS. Using 3 input raster and
> > > displaying a 3 gradient colour map with a corresponding triangle
> > > legend.
> >
> > scale all three maps to 0-255 (if r.rescale doesn't work for maps with
> > floating point data (it probably does, but may not), it can be done with
> > r.mapcalc).
> >
> > then use d.rgb to display it. (or perhaps d.his?)
>
> d.rgb
>
> > no ideas about how to generate the legend outside of a paint program.
>
> #!/bin/sh
> eval `g.region -g`
> r.mapcalc <<-EOF
> tri.r = eval(\
> s = float(col() - 1) / $cols,\
> t = 1 - float(row() - 1) / $rows,\
> u = s - 0.5 * t,\
> v = t,\
> out = u < 0 || v < 0 || u+v > 1,\
> if(out,null(),u))
> tri.b = if(out,null(),v)
> tri.g = if(out,null(),1-u-v)
> EOF
> for ch in r g b ; do
> r.colors tri.$ch color=grey1.0
> done
>
> If you want an equilateral triangle, the region needs a height/width
> ratio of cos(30) ~= 0.866.
awesome! I would vote to include it as another legend option or upload it to
the wiki script page.
thanks a lot - Martin
More information about the grass-user
mailing list