2016-05-13 172 views
0

我試圖創建一個圖像並排顯示散點圖和熱圖。我用gemap創建散點圖,用heatmap創建散熱圖。然後我使用grid.draw將它們放在相同的圖像但是我無法讓圖像的大小相同。我怎樣才能確保它們的高度相同(這很重要,因爲它們以相同的方式排列並相互匹配)?R;並排繪製散點圖和熱圖

我的代碼是:

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) 

我還試圖接着grid.arrange的geom_tile(而不是heatmap.2);儘管現在圖像匹配的圖像顏色很糟糕 - 它們在我的數據集中看起來很平坦。

+0

也許相關:http://stackoverflow.com/a/14233531/471093 – baptiste

+0

謝謝 - 我與你指着周圍的代碼,但搞砸我結束了與小我的屏幕上的圖像 - 哪一部分要改變以使圖像高度更高? – HJB

回答

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) 

enter image description here