我想做的是一个热图风格的图,但它也会通过另一个变量来改变它的大小,在这种情况下,我会使用热图来表示log2FC,使用大小的差异来表示p值。我找不到任何类似的东西,所以我试着创造我自己的,并想出了这个。
library(ggplot2)
data$gene_name <- as.factor(data$gene_name)
heatmap <- ggplot(data = data, mapping = aes(x = med, y = gene_name)) +
geom_tile(aes(fill = log2FoldChange,size = pvalue))+
theme_bw() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))+
xlab("")+
ylab("")
但是,p值正方形的大小相同。我想要的是让图形在它的一侧(在这种情况下是水平的,并且正方形的大小随p值而变化)。有可能吗??
日期示例:
gene_name log2FoldChange pvalue med
gene 1 1,13 0,0023 ATV
gene 2 2,79 0,0014 ATV
gene 3 1,27 0,0204 ATV
gene 20 0,54 0,0023 PEN
gene 21 -0,59 0,0356 PEN
gene 22 1,97 0,0243 PEN
gene 23 1,01 0,0001 PEN
1条答案
按热度按时间p5cysglq1#
在
geom_tile
中,size
美学仅控制线条的大小(在新版本的ggplot2
中,现在被linewidth
取代)。图块本身不能真正改变大小,因为它们对整个空间的填充是几何表示数据的一部分。您可以使用geom_shape
和正方形来按大小表示p值,使用scale_size_continuous
来匹配如何最好地呈现您的数据: