繁体   English   中英

R ggplot geom.tile 函数中的手动 bin 大小选择?

[英]manual bin size selection in R ggplot geom.tile function?

有没有一种方法可以手动设置大小不同的 bin 大小并在特定颜色代码后为它们着色?

我想要一个带有 binsizes 的热图:0-0.05、0.05-0.25、0.25-0.5、0.5-0.75 和 0.75-1 对于 bin 0-0.05 我想要设置颜色: "#ecefb7"用于剩余的 bins 我想要从low="#7fc8b9"high="#3a81b5"

我确实设法在我的图例中找到了垃圾箱,但没有使用特定的颜色编码。 也许有人知道我如何实现这一目标?

样本最小数据:

    Group sample     pvalue
1   OG0000010:Up  EB1_D 0.04900000
2 OG0000050:Down  EB1_D 0.19019725
3   OG0000638:Up  EB1_D 0.52008137
4   OG0000010:Up  EN1_D         NA
5   OG0000050:Down  EN1_D 0.01615993
6 OG0000638:Up  EN1_D 0.48958058

到目前为止我使用的代码:

ggplot(pvaldata2, aes(x=sample, y=Group)) + 
  geom_tile(colour="black", size=0.25, aes(fill=pvalue)) +
  scale_fill_gradient(low="#ecefb7", high="#3a81b5", na.value = "white",
                      breaks = c(0.05, 0.25, 0.5, 0.75), 
                      labels = c("0.05", "0.25", "0.5", "0.75")) +
  theme(axis.text.y = element_text(size = 8))

生成的热图但仍然使用错误的 bin 颜色: 在此处输入图片说明

您可以通过更改克服色阶完全控制scale_fill_gradientn ,设定limitsc(0, 1) ,specfiying所有的颜色在一个载体,以及它们在向量位置values 在您的情况下,它看起来像这样:

ggplot(pvaldata2, aes(x = sample, y = Group)) + 
  geom_tile(colour="black", size = 0.25, aes(fill = pvalue)) +
  scale_fill_gradientn(colours = c(rep("#ecefb7", 2), "#7fc8b9", "#3a81b5"),
                       na.value = "white",
                       values = c(0, 0.05, 0.0501, 1),
                       limits = c(0, 1)) +
  theme(axis.text.y = element_text(size = 8))

在此处输入图片说明

如您所见,这将NA着色为白色,p 值低于 0.05(甚至非常接近 0.05 的值)为所需的浅黄色,其余为所选渐变。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM