[GRASS-user] Triangle plot with correspoding map
Glynn Clements
glynn at gclements.plus.com
Thu Nov 29 23:31:03 EST 2007
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.
--
Glynn Clements <glynn at gclements.plus.com>
More information about the grass-user
mailing list