Hi Uwe,

thanks a lot for your answer! And thanks a lot to all others helping me with this issue!

Uwe Ligges schrieb:


Antje wrote:
Hi Uwe,

I tried to explain my problem with the given example.
I don't see any documentation which tells me that the length of "col.regions" should be one less than "at". (At least I assume now that it should be this way...) If it's equal or longer some colors (in the middle of the color-vector) are simply not used. Just try the example below with rainbow(5) and rainbow(6) and compare the results... both plot will use 5 colors! Sorry, but this behaviour is not really self-explaining to me... maybe I'm to blind to find the documentation which says that only one color less will ensure the usage of all colors.

Well, of you have 5 at locations (i.e. breaks), then you have 4 intervals in between and that's the amount of colors that is sensible.

From the documentation this was not really clear to me (though it makes sense, I agree)



(It is so important for me because I need to display a heatmap with colors let's say
* all lower data outliers "green",
* all higher data outliers "blue" and
* everything else within the color range "yellow" to "red".
I've seen that some values do not get blue or green though they are outliers...
I've attached one graph, I've generated - maybe it helps to understand)

Any wrong assumption?

Maybe:

Say you want everything below -1 be considered as a lower outlier and all above 1 is a higher outlier, then you can say:


levelplot(matrix(c(1,2,0,-2), nrow=2),
    at = c(-Inf, seq(-1, 1, length=10), Inf),
    col.regions = c(rgb(0,1,0),
         hcl(seq(20, 80, length=10), c=400),
         rgb(0,0,1)))

Then below -1 is green (rgb(0,1,0)), above 1 is blue (rgb(0,0,1)) and in between we have 10 regions from -1 to 1 each with a color between some kind of yellow and red in hcl() space.

Thank you for this little example. Just two comments:

1) I was not aware of the possibility to use "Inf" - it just has the disadvantage that these colors are not displayed at the color vector (maybe this can be adjusted somehow)

2) if you replace one number of the matrix with -1, it will be displayed green.
So it would be considered as an outlier. From the documentation it was also not clear to me that the lower endpoint of the interval is always excluded (except for the very first value of the at-vector), while the upper endpoint will be included. (This also makes sense but in this case I have to slightly modify my data because I'd like to include both endpoints of my non-outlier-range...)

Anyway, I guess, I solved all problems and found a workable solution :-)

Ciao,
Antje




Uwe Ligges




Ciao,
Antje


Uwe Ligges schrieb:


Antje wrote:
Hi there,

as I'm not sure to understand the coloring levelplot uses, I'm looking for another easy way to create a heatmap like this:

library(lattice)
mat <- matrix(seq(1,5, length.out = 12), nrow = 3)
mat[1,2] <- 3.5

my.at <- seq(0.5,5.5, length.out = 6)
my.col.regions <- rainbow(5)

graph <- levelplot(t(mat[nrow(mat):1, ] ), at = my.at, col.regions = my.col.regions)
print(graph)

Can anybody help me with some hints or little examples?


Dear Antje,

since you are asking the same question again now, maybe you can explain what you are going to get? In fact, I do not undertsand where your problem is. R places the colors according to the values in your matrix very well including the legend and I thought up to today that the plot is self explaining.

Best wishes,
Uwe Ligges




Antje

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.




______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to