我有一个热图,它的梯度从绿色到红色,值的范围是-2到2。
现在我想给热图的每个块赋一个值,有什么办法可以实现?
答案 0 :(得分:0)
请参见下面使用tidyverse
软件包的方法。 dat
从宽格式转换为dat2
。然后绘制geom_tile
:
library(tidyverse)
# simulation
dat <- matrix(runif(81, -2, 2), ncol = 9)
## reshape data (tidy/tall form)
dat2 <- dat %>%
tbl_df() %>%
rownames_to_column("Var1") %>%
gather(Var2, value, -Var1) %>%
mutate(
Var1 = factor(Var1, levels=1:10),
Var2 = factor(gsub("V", "", Var2), levels=1:10))
## plot data
ggplot(dat2, aes(Var1, Var2)) +
geom_tile(aes(fill = value)) +
geom_text(aes(label = round(value, 1))) +
scale_fill_gradient(low = "green", high = "red")