我正在尝试创建一个并排显示散点图和热图的图像。我使用geom_point创建散点图,使用heatmap创建热图。然后我使用grid.draw将它们放在相同的图像中但是我无法将图像放大到相同的大小。我怎样才能确保它们的高度相同(这很重要,因为它们以相同的方式排序并相互匹配)?
我的代码是:
grab_grob <- function(){
grid.echo()
grid.grab()
}
g1 <- ggplot(x, aes(x=VIPscore, y=reorder(metabolite, VIPscore))) + geom_point(colour="blue") + labs(y="", x="VIP score")
heatmap.2(xhm, cexRow=0.5, cexCol=1, Colv=FALSE, Rowv = FALSE, keep.dendro = FALSE, trace="none", key=FALSE, lwid = c(0.5, 0.5), col=heat.colors(ncol(xhm)))
g2 <- grab_grob()
grid.newpage()
lay <- grid.layout(nrow = 1, ncol=2)
pushViewport(viewport(layout = lay))
print(g1,vp=viewport(layout.pos.row = 1, layout.pos.col = 1))
grid.draw(editGrob(g2, vp=viewport(layout.pos.row = 1, layout.pos.col = 2, clip=TRUE)))
upViewport(1)
我还尝试了geom_tile(而不是heatmap.2),然后是grid.arrange;虽然现在尺寸颜色匹配的图像很糟糕 - 但它们在我的数据集中看起来很平。
答案 0 :(得分:1)
名为plotly
的软件包在这里可能会有所帮助。看看他们的API docs
library(plotly)
df <- data.frame(x = 1:1000,
y = rnorm(1000))
p1 <- plot_ly(df, x = x, y = y, mode = "markers")
p2 <- plot_ly(z = volcano, type = "heatmap")%>% layout(title = "Scatterplot and Heatmap Subplot")
subplot(p1, p2)
答案 1 :(得分:0)
插入式解决方案可能是使用“ComplexHeatmap”包。