SV: SV: [GRASS-user] Vector map text legend (now more spesific
about logarithmic raster legend)
Martin Album Ytre-Eide
Martin.Album.Ytre-Eide at nrpa.no
Mon May 23 09:34:35 EDT 2011
Hello again.
I have followed your suggestion about r.catagory with rules like:
1:2:10-100
2:3:100-1000
etc
r.catagory map='name_map' vals=1,2
Confirms that these categories are present. However I have not been able to display these categories with d.legend with a number of combinations of flags and range, use etc.
What could I be missing?
Best regards,
Martin
-----Opprinnelig melding-----
Fra: Hamish [mailto:hamish_b at yahoo.com]
Sendt: 5. april 2011 09:30
Til: grass-user at lists.osgeo.org; Martin Album Ytre-Eide
Emne: Re: SV: [GRASS-user] Vector map text legend
Hamish:
>> "the way to do this is to use
>> r.category to add category labels to each of your four raster
>> category numbers, then use d.legends's -c flag to hide the value of
>> the number, so only the label is displayed."
Martin Album Ytre-Eide wrote:
> This was exactly what I was looking for. This solves many of my legend
> issues. Thanks a lot.
glad to hear it.
> A follow up question is: Would this be a good way to deal with
> logarithmic values in a legend?
d.legend use=, but the version from GRASS 6.5 or 7, with Dylan's verbatim patch.
> -I convert rasters to have logarithmic values with
> r.mapcal: map = log(old_map,10)
> -This gives me a nice map with a nice legend. One could use r.colors
> -g (logarithmic scaling), but this messes up the legend - the legend
> is still linear- and it does not look good.
> -The problem is(my way of doing things) that the category numbers are
> log values as well(say 1-3-5 insted of 10-1000-100000), which there is
> noting wrong with, it is just not that easy to read.
use= will draw at whatever levels you give it; I plan to backport the (anti-)rounding patch for 6.4.2, ie after some time of live testing. see https://trac.osgeo.org/grass/ticket/1147
feedback welcome.
> So, is it a good idea to add category labels to all values (or a range
> of values) x - 10^x ( so for 1, I add 10 and so
> fort) or is it a better way to do this as well?
It's a matter of taste, but personally I am not a fan of band
rendering- where you (as a human) decide to arbitrarily assign the category breaks can have a most remarkable(!) effect on how the map is interpreted by other humans. See "how to lie with statistics", "how to lie with maps", and other related books & articles. You'll probably be most convinced by your own data one day, when you pop one of your own insights after a new rendering.
In nature such thresholds are not so clearly defined. To aid the viewer of a figure my favourite method is a continuous color gradation + overlaid contour lines.
but anyway, ... the easiest way to display classes from raster data in GRASS is to make a r.colors rule set like:
0% blue
25% blue
25% cyan
50% cyan
50% yellow
75% yellow
75% red
100% red
then r.category 'a - b' classes + d.legend use= can work.
hint for the above: remember that if you are careful the map displayed and the legend displayed can actually be for two different maps (one of which being a dummy which just exists for making the legend).
(note to self- verify that GRASS 7 doesn't optimize that step functionality away)
I think Arc & copycats use class breaks so much in their legends simply as a matter of the vector-feature heritage of that software; histogram classes make more sense if you start with a number of sparse data points. In raster maps (traditionally GRASS's strong point) it is more a case of continuous gradations.
shrug; just a small theory.
hope it helps,
Hamish
More information about the grass-user
mailing list