3

要するに: を使用して作成された 2 パネル プロットの「パネル」ごとに、個別の凡例が必要facet_wrapです。facet_wrap(scales="free")異なる軸スケールが必要な場合は問題なく使用できますが、ポイントのサイズには使用できません。

背景: xy、およびzの 3 つの測定値を持ついくつかのサンプルのデータがあります。各サンプルは、クラス 1 またはクラス 2 からのものです。xyは、各クラスで同じ分布を持ちます。ただし、クラス 1 のすべてのz測定値は 1.0 未満です。クラス 2 のz測定値の範囲は 0 から 100 です。

私が立ち往生している場所: xyをそれぞれ x 軸と y 軸に プロットします。各点の面積をそのz値に比例させます。

d = matrix(c(runif(100),runif(20)*100),ncol=3)
e = data.frame( gl(2,20), d )
colnames(e) = c("class","x","y","z")
ggplot( data = e, aes(x=x, y=y, size=z) ) + 
  geom_point() + scale_area() +
  facet_wrap( ~ class, ncol=1, scales="free" )

ここに画像の説明を入力

問題: 最初のパネルのドットは、0 から 100 の範囲の単一の凡例に使用されるスケールの非常に低い端にあるため、見にくいことに注意してください。異なる範囲) または 2 つのプロットを作成し、それらをビューポートと結合する必要がありますか?

4

1 に答える 1

5

を使った解決法grid.arrangefacet_wrapそのまま残してあるので電話に出てしまいましたstrip.text。これで簡単に削除できました。

# plot for class 1
c1 <- ggplot(e[e$class==1,], aes(x=x,y=y,size=z)) + geom_point() + scale_area() + facet_wrap(~class)
# plot for class 2
c2 <- c1 %+% e[e$class==2,]

library(gridExtra)

grid.arrange(c1,c2, ncol=1)

ここに画像の説明を入力

于 2012-11-27T23:19:53.857 に答える