3

私はこの散布図を持っています:

iris$size <- 2
ggplot(iris) + geom_point(aes(x=Sepal.Width, y=Sepal.Length, color=Species, size=size))

それは正常に動作します。ここで、ポイントの 1 つだけを他のポイントよりもわずかに大きくしたいので、次のようにします。

iris$size[3] <- 2.5
ggplot(iris) + geom_point(aes(x=Sepal.Width, y=Sepal.Length, color=Species, size=size))

これにより、サイズに不均衡な違いが生じます。ポイントiris$size[3]は残りのポイントよりも 20% 大きくはなく、かなり大きい(おそらく 10 倍) です。単純にsize=2.5 のような定数に設定するとaes()、サイズ 2.5 は 2.0 と比較して予想どおり大きく見えaes()ますが、データ フレームの列として設定されている場合はそうではありません。

についても同様ですalpha=alpha=定数として設定すると、その範囲内aes()では問題なく動作しますが、いくつかのポイントを のアルファを持つように設定し、いくつかのポイントを のアルファを持つように設定する0.60.65、差が増幅されて非常に大きくなります。

どうすればこれを回避できますか? aes()を呼び出すときに列の外で行うのと同じように、内の列からアルファ/サイズの値を解釈するにはどうすればよいgeom_point()ですか? ありがとう。

4

1 に答える 1

3

サイズを設定すると、値は事前設定された範囲に分散されます。scale_size_continuous()デフォルトの範囲は 1 から 6 です。そのため、データの最小値が取得されsize=1、最大値が取得されますsize=6scale_size_continuous()と引数を使用するとrange=、たとえば元のデータと同じように、独自の範囲を取得できます。

ggplot(iris) + geom_point(aes(x=Sepal.Width, y=Sepal.Length, 
                color=Species, size=size))+
  scale_size_continuous(range=c(2,2.5),breaks=c(2,2.5))

に使用されるデータsize=が、プロットに表示したい実際のサイズの値である場合は、で指定された値を直接scale_size_identity()解釈する use を使用できます。size=aes()

ggplot(iris) + geom_point(aes(x=Sepal.Width, y=Sepal.Length, color=Species, size=size))+
  scale_size_identity()
于 2013-03-29T16:42:54.437 に答える