R+ggplot: Heatmap. Specific color if value = ‘X’
我正在使用 ggplot 和 RColorBrewer 在 R 中制作一些热图。我正在绘制一系列整数值,但其中一些值是”无”,我想将这些值着色为特定颜色。有人可以就修改我的代码以添加此功能的最合适方法提出建议,包括添加显示”新颜色标签”无”的第二个图例?我对 R 很陌生,所以没有太多运气靠自己搞定这个。
非常感谢!! :)
示例数据
|
1
2 3 |
Target A.tg_t0_rep_A B.tg_t0_rep_B C.tg_t0_rep_C D.tg_t0_rep_D E.tg_w2_rep_A F.tg_w2_rep_B G.tg_w2_rep_C H.tg_w2_rep_D I.tg_w4_rep_A J.tg_w4_rep_B
1 : 12110501 None 0.5625 0.25 0.5714 None None 0.5 None None 0.2857 1 : 27262099 0.3333 0.8889 0.6667 0.9231 None None 0.5556 0.6667 None 0.375 |
情节代码
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
library(ggplot2)
library(RColorBrewer) data <- read.csv(‘test.csv’, header =TRUE) # set colour palette # heatmap! |
我不确定您是如何将”无”与数值混合在一起的。那些被读入的因素?您可能希望将 “None” 值设置为 NA,这是 R\\ 的特殊缺失值。您可以通过设置 na.strings=c(“”,”None”).
在 read.table 期间执行此操作
但最后似乎 scale_fill_gradient2 函数有一个 na.value = 参数。因此,如果您将值转换为真正的 NA 值,那么您可以为它们设置颜色,就像为 high 和 mid 等所做的一样。
示例:
|
1
2 3 4 5 6 |
#sample data with missing values
dd<-data.frame( expand.grid(x=1:10, y=1:10), value=rpois(10*10, 10) ) dd$value[c(5,10,55,77)] <- NA |
现在做一个情节
|
1
2 3 4 5 |
ggplot(dd, aes(x=x, y=y, fill=value)) +
geom_tile() + scale_fill_gradient2(high=”red”,mid=”white”,low=”blue”, na.value=”yellow”, midpoint=mean(dd$value, na.rm=T) ) |

- 感谢您的回复。我可以将 \\’None\\’ 替换为 \\’NA\\’ 或 NA 或 R 最好处理的任何内容。我已经尝试了这两种方法并尝试使用不同的调色板在 scale_fill_gradient2 中实现 na.value 选项,但它不起作用。我没有收到任何错误,但对应于 NA 值的图块没有什么不同。此外,比例从 0>1 上升到 0>25,所以看起来 NA 值是作为数值读入的?
- @user1995839 我添加了示例数据和代码来制作绘图。也许您可以编辑原始问题以包含 str(data_shaped) 的结果,以便我们了解您的数据结构。您要确保数值是数字。
- 非常感谢您花时间提供帮助。你是个传奇!! ^_^
来源:https://www.codenong.com/23879639/
