在ggplot2中对齐/设置边距/图形区域的宽度

时间:2016-12-19 22:14:14

标签: r ggplot2

我需要将几个图形放在彼此之下,我希望边距和图形区域的宽度相同,因此它们整齐排列。请注意,我需要两个单独的图,而不是一个联合图。我想将每个保存在一个单独的PNG文件中。我只是希望它们的结构(边距,图形区域大小)相同。

<DataGridTextColumn  Binding="{Binding type}"    Width="100" HeaderStyle="{StaticResource HeaderStyle}"   ElementStyle="{StaticResource dataGridElementStyle}"  />

enter image description here enter image description here

我想要的是绘图2具有与绘图1中相同的左边距宽度,或多或少像下面一样,当然不添加额外的空白;)

enter image description here

在基本图形中,我只需相应地设置library(ggplot2) d <- data.frame(label=c("some very longe label with lots of text", "another long label with lots of text", "short", "also short", " short", " also short"), x = 1:6) ggplot(d[1:2, ], aes(label, x)) + geom_bar(stat = "identity") + coord_flip() ggplot(d[3:4, ], aes(label, x)) + geom_bar(stat = "identity") + coord_flip()

如何在ggplot中实现这一目标?

1 个答案:

答案 0 :(得分:5)

根据last link from the comment above的答案, 你可以等于图的宽度。与答案的唯一区别在于它们没有合并。

所以你的情节

library(ggplot2)
p1 <- ggplot(d[1:2, ], aes(label, x)) + geom_bar(stat = "identity")  + coord_flip()
p2 <- ggplot(d[3:4, ], aes(label, x)) + geom_bar(stat = "identity")  + coord_flip()

等于情节的宽度

library(grid)
gl <- lapply(list(p1,p2), ggplotGrob)  
wd <- do.call(unit.pmax, lapply(gl, "[[", 'widths'))
gl <- lapply(gl, function(x) {
        x[['widths']] = wd
        x})

剧情

grid.newpage(); grid.draw(gl[[1]])
grid.newpage(); grid.draw(gl[[2]])

产生:

情节1

enter image description here

Plot 2

enter image description here