4

等しい値が完全な可視性に対応し、無限に近づく値が完全な透明度に近づくアルファに対応するように、aesにマップしたいpp変数を含むデータフレームがあります。nearby_distancealphanearby_distance0nearby_distance

新しい変数を定義して、 aesとしてpp$alphavar <- exp(-pp$nearby_distance)使用できます。このアプローチは、必要な変換を満足させますが、プロットに表示される凡例は意味のある単位ではありません。この望ましい変換を実現する手動のアルファ スケールを作成するにはどうすればよいですか?alphavaralpha

ありがとう。

4

1 に答える 1

4

xyおよびnearby_distance値を含むサンプル データ フレームを作成しました。

pp<-data.frame(x=1:200,y=1:200,nearby_distance=seq(0,9.95,0.05))

scalesニーズに合ったものが存在しない場合は、ライブラリ内の値の独自の変換を定義する可能性があります (「 」を参照?trans)。したがって、元のデータ フレームで変換を行う必要はありません。変換を使用すると、値が変換され、プロットおよびブレークの定義に使用されます。次に、ブレークが逆変換されて、凡例のラベルが作成されます。

library(ggplot2)
library(scales)

negexp_trans <- function(){
  trans_new('negexp', function(x) exp(-x), function(x) -log(x))
}

scale_alpha_continuous()プロットを取得するために使用される新しい変換。

ggplot(pp,aes(x,y,alpha=nearby_distance))+geom_point(size=5) + scale_alpha_continuous(trans = 'negexp')

カスタム アルファ スケーリングを使用したサンプル プロット

于 2013-01-14T07:09:30.793 に答える