[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