1

私はプロット機能を持っています:

drawFoo <- function(df) {
  ggplot(data=df, aes(x=x, y=y, colour=c)) + 
  geom_point(alpha=1, size=5)
}
bar <- data.frame(x=1:10, y=10:1, c=as.factor(rbinom(10, 1, 0.5)))
drawFoo(bar)

次に、そのリターンを少し調整して使用したいと思います。言って、私が使用する色を変更するには

drawFoo(bar) + scale_colour_manual(values = 1:2)

ただし、サイズとアルファに対して同じアプローチを使用すると、次のいずれも機能しません。

drawFoo(bar) + scale_size_manual(values = 1:10)
drawFoo(bar) + scale_alpha_manual(values = rep(1/10, 10))

そして、私は常に最初の写真に影響を受けていません。
私が知る限り、問題の美学が変数にマッピングされていない場合に発生します。しかし、これが予想される動作である理由がわからないため、説明とオーバーライドの回避策を歓迎します。ありがとう!

4

2 に答える 2

2

おそらく、次のようにサイズとアルファを引数として追加できます。

drawFoo <- function(df,alpha=1,size=5) {
    ggplot(data=df, aes(x=x, y=y, colour=c)) + 
    geom_point(alpha=alpha, size=size)
}

したがって、デフォルト値として 1 と 5 がありますが、関数の使用中にそれらを変更できます。

drawFoo(df) ## alpha=1, size=5
drawFoo(df,alpha=0.5,size=2) 
于 2013-10-02T09:00:37.710 に答える
0

したがって、関数ではアルファとサイズを設定するため、美学ではありません。美学では、サイズや透明度などの視覚的要素を変数にマッピングし、スケールでは、それをどのようにマッピングするかを説明します (たとえば、変数の低レベルを緑に、高レベルを赤に)。

たとえば、ポイントサイズを 5 に設定するなど、ビジュアル要素を何らかの品質に設定すると、スケールはもはや意味をなしません (スケールで記述できるマッピングがもうないためです。単純にすべてのポイントを設定して、サイズ 5) は、変数に関係なくポイントサイズが直接 5 に設定されているためです。

作成した関数には依存しません。関数内で使用する ggplot オブジェクトで後者の 2 つのスケールを直接使用できます。影響はありません。

于 2013-10-02T08:41:52.767 に答える