31

ggplot2panel.marginの引数を使用して、ファセットプロット間のマージンを変更する機能があります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")) 

したがって、現在は次のようになります。ここに画像の説明を入力してください

どうすればもっと次のように見せることができますか?ここに画像の説明を入力してください

4

2 に答える 2

41

2015 年 7 月 9 日の時点で、panel.margin.xおよびpanel.margin.yが実装されているようです。

p <- p + theme(panel.margin.x=unit(0.5, "lines") , panel.margin.y=unit(1,"lines"))

2016 年 12 月 15 日現在、「panel.spacing」と「panel.spacing.x」は r 3.3.2 と ggplot2 2.2.0 で実装されています。

p <- p + theme(panel.spacing.x=unit(0.5, "lines"),panel.spacing.y=unit(1, "lines"))
于 2015-07-09T14:33:23.857 に答える
9

この機能が利用可能になるまでの手動の解決策:

library(grid)
height <- 0.5 # Vertical spacing
aux <- 1e-5 # Auxiliary number to identify 'height' among other heights
width <- 0.1 # Desirable horizontal spacing

p <- p + theme(panel.margin = unit(height + aux, "lines"))

gtable <- ggplot_gtable(ggplot_build(p))
gtable$widths[sapply(gtable$widths, '[[', 1) == height + aux][[1]][[1]] <- width
grid.draw(gtable)

ここに画像の説明を入力

于 2013-01-27T17:33:00.393 に答える