我有这两个图(一个热图和一个堆叠条形图)。我怎样才能把这两个图放在一起呢?我确实想把这两个图整合起来。
谢谢你的帮助。
下面是我的脚本:
df.bar <- data.frame(Gene.name=c('Gene1','Gene1','Gene1','Gene2','Gene2','Gene2','Gene3','Gene3','Gene3',
'Gene4','Gene4','Gene4'),
Alteration.frequency=c(0.0909, 2.1838, 0.6369, 0.1819, 1.0919, 0.3639, 0.4549,0.7279,
0.7279, 0.000, 0.3639, 0.4549),
Alteration.Type=c("Deep deletion", "Amplification", "Point mutation", "Deep deletion",
"Amplification", "Point mutation", "Deep deletion", "Amplification" ,
"Point mutation", "Deep deletion", "Amplification" , "Point mutation"))
library(ggplot2)
ggplot(df.bar,
aes(fill=factor(Alteration.Type, levels = c('Point mutation','Amplification','Deep deletion')),
y=Alteration.frequency, x=Gene.name)) +
geom_bar(position="stack", stat="identity")+theme_bw()+
theme(axis.text.x = element_text(size = 10, angle = 45, hjust = 1, colour = 'black'))+
scale_fill_manual(values=c("seagreen2", "maroon2",'deepskyblue3'))+
labs(fill = 'Alteration type')
df.heatmap <- data.frame(Gene_name=c('Gene1','Gene2','Gene3','Gene4'),
log2FC=c(0.56,-1.5,-0.8,2))
library(gplots)
heatmap.2(cbind(df.heatmap$log2FC, df.heatmap$log2FC), trace="n", Colv = NA,
dendrogram = "none", labCol = "", labRow = df$Gene_name, cexRow = 0.75,
col=my_palette)
我需要这样的情节。
2条答案
按热度按时间ojsjcaue1#
有多种方法可以将
heatmap.2
之类的基本R图形和ggplot
之类的基于网格的图形混合在一起,但这种情况稍微复杂一些,因为heatmap.2
似乎使用了多个绘图区域。编辑
从评论来看,我们似乎希望一个图在另一个图的上面,OP使用
heatmap.2
,因为似乎不可能在ggplot中获得单个变量热图。此编辑解决了以下两个问题:
vlju58qv2#
另一个选择是使用
cowplot
包中的plot_grid
来合并和basegraphics或其他框架。对于热图,您可以使用~
,我稍微修改了图例的大小以更好地适应它。下面是一个可重现的示例:创建于2022年12月3日,使用reprex v2.0.2