我在how to make a binary heat map several times on a data frame提出了一个问题而没有得到任何反馈,我认为这并不容易。我试图解决问题以获得一些答案
所以我认为我的数据结构中只有一个数据如下
df1<- structure(list(time = c(1L, 1L, 1L, 1L, 1L, 1L), level = structure(1:6, .Label = c("B",
"C", "D", "E", "F", "G"), class = "factor"), X2 = c(266L, 480L,
396L, 501L, 481L, 542L), X3 = c(356L, 587L, 491L, 320L, 883L,
422L), X4 = c(452L, 406L, 521L, 300L, 582L, 506L), X5 = c(549L,
368L, 548L, 528L, 673L, 701L), X6 = c(414L, 398L, 526L, 593L,
639L, 484L)), .Names = c("time", "level", "X2", "X3", "X4", "X5",
"X6"), class = "data.frame", row.names = c(NA, -6L))
首先我得到它的范围如下:
min(df1[3:length(df1)])
max(df1[3:length(df1)])
这意味着数据分布在266和883之间。
现在我想将较低的一个设置为较低的红色,将较接近较高值的一个设置为黄色
我尝试使用reshape2
绘制如下图,但我无法弄清楚如何设置值和其他内容
library(reshape2)
melted_cormat <- melt(df1)
ggplot(data = melted_cormat, aes(x=level, y=variable, fill=value))
答案 0 :(得分:1)
使用与您的代码类似的内容(请注意包含&#34; id&#34;变量)...
melted_cormat <- melt(df1, id = c("time", "level"))
ggplot(data = melted_cormat, aes(x=level, y=variable, fill=value)) +
geom_tile() + scale_fill_gradient(low = "red", high = "yellow")
请注意,您可以将十六进制代码替换为&#34; red&#34;和&#34;黄色&#34;在scale_fill_gradient中,如果你想要一个或两个特定的色调。