6

カラースケールのしきい値を指定することはできますか?

この例を見てください:

xy <- expand.grid(x=1:20,y=1:20)
xyd <- data.frame(xy,z=runif(400),a=rowSums(xy)/40)
g <- ggplot(xyd, aes(x=x, y=y, fill=z, alpha=a)) + 
       geom_tile() + 
       scale_alpha(range=c(0,1), limits=c(0.5,1))
g

Scale_alpha は、指定された制限内の値にのみ適用されます

私が欲しいのは、左下半分が見えないように、0.5 未満の値のアルファ値が 0 になることです。明らかに、元のデータを変換できますが、それは凡例を破壊します。

4

2 に答える 2

14

しきい値は機能しており、そのしきい値外の値は に設定されていNAます。問題は、alphaNAが完全な不透明としてレンダリングされることです。na.valueスケールに を設定すると、必要な0結果が得られます。

ggplot(xyd, aes(x=x, y=y, fill=z, alpha=a)) + 
       geom_tile() + 
       scale_alpha(range=c(0,1), limits=c(0.5,1), na.value = 0)

ここに画像の説明を入力

于 2012-08-14T16:39:39.457 に答える
4

スケールを使用してアルファを制御する試みはどれも完全に成功しませんでした。私の最善の試みはifelse、次の値を制御するために使用することでした:

ggplot(xyd, aes(x=x, y=y, fill=z)) + 
  geom_tile(aes(alpha=ifelse(a<=0.5, 0, a))) +
  scale_alpha(range=c(0,1))

ここに画像の説明を入力


したがって、別のアプローチが必要です。プロットしたくない値をデータから削除します。

xyd <- with(xyd, xyd[a>0.5, ])

ggplot(xyd, aes(x=x, y=y, fill=z)) + 
  geom_tile(aes(alpha=a))

ここに画像の説明を入力

于 2012-08-14T11:18:53.000 に答える