【问题标题】:R; plotting scatter plot and heat map side by sideR;并排绘制散点图和热图
【发布时间】:2016-09-10 07:09:20
【问题描述】:

我正在尝试创建一个并排显示散点图和热图的图像。我用 geom_point 创建散点图,用 heatmap.2 创建热图。然后我使用 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;尽管现在图像大小颜色匹配很糟糕 - 它们在我的数据集中看起来很平坦。

【问题讨论】:

  • 可能相关:*.com/a/14233531/471093
  • 谢谢 - 我弄乱了你指向的代码,但最终我的屏幕上出现了小图像 - 我应该更改哪个部分以使图像高度更高?

标签: r ggplot2 heatmap


【解决方案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)

【讨论】:

    【解决方案2】:

    【讨论】: