[R] Heatmap without levelplot
Uwe Ligges
ligges at statistik.tu-dortmund.de
Wed May 6 10:24:24 CEST 2009
Antje wrote:
> 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...)
You can add or substract .Machine$double.eps to the endpoint in order to
in/exclude the "==" case.
Uwe Ligges
> 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 at 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.
>>>>
>>>
>>
>
More information about the R-help
mailing list