Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Custom Heat Map in R

I need to create custom heat map as illustrated in the attached figure. It is different from a conventional heat map in the sense that I want it to use two color gradients, one for positive values and one for negative values.

enter image description here

As shown in the attached figure, I would like one color to depict the intensity of the values that are positive (or ideally above a certain threshold) and another color to depict the intensity of the values that are negative (alternatively, below the threshold).

A little background: I have a binary choice set, one option is to be preferred for a certain range of data while the other is preferred for the remaining data. I want to provide a visual aid that will depict which option/choice is better for the different combinations of data but I want the visual aid to also provide the scale of "betterness" that one option has over the other for that instance. So the color would tell which option to pick while the intensity of the color with tell how much better is that option compared to the other.

like image 304
Arjun Avatar asked Nov 17 '11 01:11

Arjun


People also ask

Can you make a heatmap in ggplot2?

Most basic heatmap with ggplot2 This is the most basic heatmap you can build with R and ggplot2 , using the geom_tile() function. Input data must be a long format where each row provides an observation.

What package is heatmap in R?

Complex heatmap. ComplexHeatmap is an R/bioconductor package, developed by Zuguang Gu, which provides a flexible solution to arrange and annotate multiple heatmaps. It allows also to visualize the association between different data from different sources.


1 Answers

here is an example using ggplot2:

# sample data
df <- data.frame(expand.grid(x = 1:4, y = 1:4), v = runif(16, -10, 10))

# plot
ggplot(df, aes(x, y, fill = v, label = sprintf("%.1f", v))) + 
  geom_tile() + geom_text() +
  scale_fill_gradient2(low = "blue", high = "red")

enter image description here

like image 126
kohske Avatar answered Nov 03 '22 04:11

kohske