如何绘制具有给定值范围的二进制文件

时间:2018-01-03 19:48:03

标签: r plot

我在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))

1 个答案:

答案 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")

制作了这个情节...... enter image description here

请注意,您可以将十六进制代码替换为&#34; red&#34;和&#34;黄色&#34;在scale_fill_gradient中,如果你想要一个或两个特定的色调。