2015-09-06 50 views
13

これは主に、theme()機能でpanel.margin = unit(...)がどのように機能するのか誤解している可能性がありますが、私はfacet_wrapの余白をカスタマイズすることができません。基本的には、ファセットテキスト(つまりstrip.text)を各ファセットに挿入し、各ファセット間にスパケットを入れないで、facet_gridを作成します。ggplot2とfacet_wrapでは、すべてのマージンとパディングを削除してstrip.textを保持する方法は?

(各ファセットの寸法を示すためにピンクの枠内に残しました)

The ideal final product

だからここのコードは、これまでのところです。 strip.text完全

p + mytheme + theme(strip.text = element_blank()) 

no strip text

を削除

library(ggplot2) 
library(grid) 
p <- ggplot() + 
    geom_bar(data = mtcars, aes(x = cyl, y = qsec), stat = 'identity') + 
    facet_wrap(~ carb, ncol = 3) 

mytheme <- theme_minimal() + theme(
    axis.text.x = element_blank(), 
    axis.text.y = element_blank(), 
    axis.ticks = element_blank(), 
    axis.title = element_blank(), 
    panel.margin = unit(0, "lines"), 
    panel.border = element_rect(colour = rgb(1.0, 0, 0, 0.5), fill=NA, size=1) 
) 
標準プロット
p + mytheme 

just a standard plot

は、データとプロットを設定するにはstrip.textを追加し、それ

p + mytheme + 
    theme(strip.text = element_text(size = rel(3.0), vjust = -4.0)) 

test grid inset text

strip.textの再封入(および増加相対サイズ)insetting二列間の垂直マージンを増加させます。だからこの時点で、私はトップとボトムの行の間の垂直のギャップを閉じる方法を知らない。

あまりにも多くの負のマージン
p + mytheme + 
    theme(strip.text = element_text(size = rel(3.0), vjust = -4.0), 
      panel.margin = unit(c(-2, -2), "lines")) 

Too much negative margin

は、どのように私は2つの行の間だけpanel.marginをターゲットにしますか?

編集:追加情報行の間のスペースはstrip.backgroundように表示されます。

p + mytheme + 
     theme(strip.text = element_text(size = rel(3.0), vjust = -4.0), 
       panel.margin = unit(-1, "lines"), 
       strip.background = element_rect(fill = rgb(0, 1.0, 0, 0.2))) 

enter image description here

+2

'panel.marginを使用する場合。y = unit(-2、 "lines") 'ならば、行間のスペースを減らすだけです。それはあなたが探していたものなのですか、それとも何か他のものがありましたか? – maj

+0

@maj ...それは簡単ではありません...しかしそれはありました。私はどこかのドキュメントでそれを逃したと思います。私はそれを受け入れることができるように答えとしてあなたのコメントを再投稿できますか? –

+0

私のシステムで@maj私は希望の結果を得るために 'panel.margin.y = unit(-0.5、" lines ")'が必要です – Jaap

答えて

7

theme()に可能な引数のリストの中で、そこだけではありませんpanel.margin(「ファセットパネルの周囲にマージン(単位)」、?themeを参照してください)しかし便利なことに、一度にpanel.margin.xpanel.margin.y(「ファセットパネルの周りの水平/垂直マージン(単位; panel.marginから継承)」)の軸の1つにアクセスすることもできます。したがって

、ゼロよりマージンの減少はハックのようなビットを感じながら、次のようなものは、仕事をするには(あなたが値を少し調整する必要があるかもしれません - unit(-2, "lines")私のために最善を働いていた):

p + theme(strip.text = element_text(size = rel(3.0), vjust = -4.0), 
      panel.margin.y = unit(-2, "lines")) 

strip.text = element_blank()を使用する場合は、おそらくpanel.margin.y = unit(-0.5, "lines")を使用してください。

関連する問題