我需要将几个图形放在彼此之下,我希望边距和图形区域的宽度相同,因此它们整齐排列。请注意,我需要两个单独的图,而不是一个联合图。我想将每个保存在一个单独的PNG文件中。我只是希望它们的结构(边距,图形区域大小)相同。
<DataGridTextColumn Binding="{Binding type}" Width="100" HeaderStyle="{StaticResource HeaderStyle}" ElementStyle="{StaticResource dataGridElementStyle}" />
我想要的是绘图2具有与绘图1中相同的左边距宽度,或多或少像下面一样,当然不添加额外的空白;)
在基本图形中,我只需相应地设置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中实现这一目标?
答案 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
Plot 2