22

1つのプロットで2つのガイド間のギャップを減らすにはどうすればよいですか。以下の例では、2つのガイドは色とサイズのスケールからのものであり、タイトル「サイズ」が1の凡例ポイントのすぐ下になるように、2つの間のギャップを変更したいと思います。この例では意味がありますが、私の実際のアプリケーションではそうです。

df=data.frame(x=rnorm(100),y=rnorm(100),color=factor(rbinom(100,1,0.5)),size=runif(100))
ggplot(df,aes(x=x,y=y,color=color,size=size)) + geom_point()

編集:これがプロットです。緑の線と矢印で強調表示されているギャップを小さくしたいと思います。

ここに画像の説明を入力してください

4

2 に答える 2

34

これで、テーマパラメータを使用して可能になるようです。

ggplot(df,aes(x=x,y=y,color=color,size=size)) + geom_point() + 
theme(legend.spacing.y = unit(-0.5, "cm"))

凡例のマージンを減らすこともできます。

legend.margin = margin(-0.5,0,0,0, unit="cm")

以上

legend.margin=unit(0, "cm")
于 2017-03-10T11:01:18.457 に答える
5

カスタマイズlegendguideパラメーターを試してみましたが、解決策が見つかりません。ggplot2設定を使用して解決策を提供したいと思います。

gtableここでは、とgridパッケージに基づく2つのソリューションを示します。

解決策としてgtable、コードはこの質問から着想を得ています。

ここに画像の説明を入力してください

  library(gtable)
  # Data transformation
  data <- ggplot_build(p)
  gtable <- ggplot_gtable(data)
  # Determining index of legends table
  lbox <- which(sapply(gtable$grobs, paste) == "gtable[guide-box]")
  # changing the space between the 2 legends: here -0.5 lines
  guide <- gtable$grobs[[lbox]]
  gtable$grobs[[lbox]]$heights <- unit.c(guide$heights[1:2],
                                    unit(-.5,'lines'),  ## you can the GAP here
                                    guide$heights[4:5])
  # Plotting
  grid.draw(gtable)

パッケージを使用した場合も同様gridです(凡例のビューポートで再描画します)

pp <- grid.get('guide',grep=T)
 depth <- downViewport(pp$wrapvp$name)
 guide <- grid.get('guide',grep=T)
 grid.rect(gp=gpar(fill='white'))
 guide$heights <- unit.c(guide$heights[1:2],unit(-0.2,'lines'),guide$heights[4],unit(0.1,'lines'))
 grid.draw(guide)
 upViewport(depth)
于 2013-01-01T10:26:46.303 に答える