ggplot2能够使用参数panel.marginin 改变刻面图之间的边距opts.这似乎改变了水平和垂直间距.有没有办法改变水平或垂直的间距而不改变另一个?
结果和期望结果的一个例子:
mtcars[, c("cyl", "am", "gear")] <- lapply(mtcars[, c("cyl", "am", "gear")], as.factor)
p <- ggplot(mtcars, aes(mpg, wt, group = cyl)) +
geom_line(aes(color=cyl)) +
geom_point(aes(shape=cyl)) +
facet_grid(gear ~ am) +
theme_bw()
p + opts(panel.margin = unit(1, "lines"))
Run Code Online (Sandbox Code Playgroud)
所以它目前看起来像:
我们怎样才能让它看起来更像:
我有一个多方面的情节,数据非常多样化.所以有些方面只有1个x值,但有些方面有13个x值.我知道有一个参数space='free'可以通过它代表的数据调整每个方面的宽度.
我的问题是,是否有可能手动调整此空间?由于我的一些方面很小,因此无法再读取刻面中的标签.我做了一个可重复的例子来说明我的意思.
df <- data.frame(labelx=rep(c('my long label','short'), c(2,26)),
labely=rep(c('a','b'), each=14),
x=c(letters[1:2],letters[1:26]),
y=LETTERS[6:7],
i=rnorm(28))
ggplot(df, aes(x,y,color=i)) +
geom_point() +
facet_grid(labely~labelx, scales='free_x', space='free_x')
Run Code Online (Sandbox Code Playgroud)
因此,根据您的屏幕,my long labelfacet会被压缩,您无法再读取标签.
我在互联网上发现了一个似乎完全符合我想做的帖子,但这似乎已经不再适用了ggplot2.该帖子是2010年.
https://kohske.wordpress.com/2010/12/25/adjusting-the-relative-space-of-a-facet-grid/
他建议使用facet_grid(fac1 + fac2 ~ fac3 + fac4, widths = 1:4, heights = 4:1),所以widths并heights手动调整每个面大小.