web-dev-qa-db-ja.com

ggplotの凡例サイズをデフォルトサイズより小さくする

私の目標は、ggplotを使用して複数のプロットを作成し、gridExtraパッケージのgrid.arrangeを使用してそれらを1つのプロットに結合することです。

プロットをgrid.arrangeと並べて配置しようとすると、ggplotの凡例(1つのプロットに適切なサイズである)が大きすぎるという問題があります。結果の結合プロットは、x軸を縮小しますが、凡例の元のサイズを維持します。その結果、不必要に大きな凡例の隣に、非常に細いプロットができます。そこで、プロットを並べて配置できるように、各プロットの凡例のサイズを小さくしたいと思います。または、それらを実際のプロット内に圧倒することなく持ち込めるように十分に縮小することもできます。

V1<-rnorm(10)
V2<-rnorm(10)
V3<-rnorm(10)
DF<-data.frame(V1,V2,V3)


ggplot(DF,aes(x=V1,y=V2,size=V3))+
geom_point(fill='red',shape=21)+
theme_bw()+
scale_size(range=c(5,20))

このプロットコマンドは、プロットの右側に標準の凡例サイズを生成します。

enter image description here

私はさまざまなテーマ要素を使用してみました:

+theme(legend.key.size = unit(0.5, "cm")

または

+theme(legend.key.width=unit(0.3,"cm"),legend.key.height=unit(0.3,"cm"),legend.position = c(0.7, 0.8))

これらのテーマコマンドを使用して凡例を大きくすることはできますが、凡例をデフォルトの凡例より小さくすることはできません。では、凡例をデフォルトのサイズを超えて縮小する方法はありますか?

また、pdfデバイスのデフォルトサイズを変更して幅を広げ、大きな凡例に対応することもできますが、現時点では標準のpdfサイズで作業したいと思います。

26
Vinterwoo

凡例の要点は、プロットの美観(色、塗りつぶし、形状、サイズなど)を凡例で特定されたレベルにマッピングすることです。パラメーター_legend.key.size_、_.width_、および_.height_は、凡例要素を囲むボックスのサイズを調整します。色、塗りつぶし、および形状を使用すると、凡例項目を好きなだけ小さくすることができますが、サイズを使用すると、要素のサイズによってどのバブルがどの凡例項目に対応するかがわかるため、凡例項目には対応するサイズが必要ですプロットにあるものに。

役立つ3つの可能性を次に示します。

オプション1:凡例をプロット内に配置します。

_ggplot(DF,aes(x=V1,y=V2,size=V3))+
  geom_point(fill='red',shape=21)+
  theme_bw()+
  scale_size(range=c(5,20))+
  theme(legend.justification=c(1,0), legend.position=c(1,0))
_

オプション2:可能であればfacet_wrap(...)を使用します。この方法では、プロットセットの凡例は1つしか取得できません。

オプション3:色とサイズを使用して、サイズの凡例をすべて非表示にします。

_ggplot(DF,aes(x=V1,y=V2,size=V3, color=V3))+
  geom_point(shape=19)+
  theme_bw()+
  scale_size(range=c(5,20), guide="none")+
  scale_color_gradient(high="#ff0000", low="#ffffcc")   
_

20
jlhoward