2016-10-26 6 views
0

Ich habe Schwierigkeiten, eine Lösung zum Ausrichten von GGPlot Grob und Table Grob zu finden. Ich habe versucht, die Anweisung here zu folgen, aber gab immer noch nicht die Ergebnisse, die ich wollte.ggplot Grobs richten sich nach TabelleGrob

library(grid) 
library(gridExtra) 
library(ggplot2) 
library(tibble) 
library(gtable) 
dat <- tibble::rownames_to_column(mtcars, "car") #convert rownames to first col 

plot1 <- ggplot(dat, aes(car, mpg)) + 
    geom_bar(stat = "identity") + 
    coord_flip() 

g1 <- ggplotGrob(plot1) 
tb1 <- tableGrob(dat$cyl) 
g1 <- gtable_add_cols(g1, unit(0.2, "npc")) 
g1 <- gtable_add_grob(g1, grobs = tb1, t=3, l=ncol(g1), b=6, r=ncol(g1)) 

grid.newpage() 
grid.draw(g1) 

Ich mag, dass jede Zelle in der Tabelle zu verwandter bar in Histogramm ausgerichtet werden, aber immer noch nicht wissen, wie die t, l, B, R vom Layout realisiert werden. This is the output I got

Antwort

0

standardmäßig die Zellenhöhen absolute Größen haben den Text aufzunehmen, aber sie can change them to relative units, so dass sie mit dem Grundstück Panel skalieren,

library(grid) 
library(gridExtra) 
library(ggplot2) 
library(tibble) 
library(gtable) 
dat <- tibble::rownames_to_column(mtcars, "car") #convert rownames to first col 

plot1 <- ggplot(dat, aes(car, mpg)) + 
    geom_bar(stat = "identity") + 
    coord_flip() 

g1 <- ggplotGrob(plot1) 
tb1 <- tableGrob(dat$cyl, theme = ttheme_default(10)) 
tb1$heights = unit(rep(1/(nrow(tb1)), nrow(tb1)), "npc") 
tb1$widths = unit.pmax(tb1$widths, unit(2, "lines")) 
g1 <- gtable_add_cols(g1, sum(tb1$widths)) 
g1 <- gtable_add_grob(g1, grobs = tb1, t=6, l=ncol(g1), b=6, r=ncol(g1)) 

grid.newpage() 
grid.draw(g1) 

enter image description here

+0

Danke für die guidence, aber ich noch don verstehe nicht warum t = 6 und b = 6. Wenn ich das Layout mit 'gtable_show_layout (g1)' ansehe, ist die Zelle (3,6) – yuskam

+0

@yuskam wirklich? https://i.stack.imgur.com/sxXCm.png – baptiste

+0

Ich sehe jetzt, dass Sie nicht die gleiche plot1 Figur, die ich benutze, verwendet, die unterschiedliche Layouts gibt. Nochmals vielen Dank für die Erklärung – yuskam

Verwandte Themen