15

私はこれにいくぶん似た質問を見てきましたが、私はできる限り直接私の特定の質問をしたいと思います:

「z」変数がカラースケールにエンコードされた散布図があります。

library(ggplot2)
myData <- data.frame(x = rnorm(1000),
                     y = rnorm(1000))
myData$z <- with(myData, x * y)

badVersion <- ggplot(myData,
              aes(x = x, y = y, colour = z))
badVersion <- badVersion + geom_point()
print(badVersion)

これを生成します:悪いバージョン

ご覧のとおり、「z」変数は正規分布しているため、分布の「極端な」色で色付けされているポイントはごくわずかです。本来あるべき姿ですが、違いを強調したいと思います。これを行う1つの方法は、次を使用することです。

betterVersion <- ggplot(myData,
                        aes(x = x, y = y, colour = rank(z)))
betterVersion <- betterVersion + geom_point()
print(betterVersion)

これを生成します:より良いバージョン

「z」変数にrank()を適用することにより、「z」変数内の小さな違いをより強調することができます。ランクの代わりに、ここで任意の変換を使用することを想像できますが、あなたはその考えを理解します。

私の質問は、基本的に、変換されたバージョンを維持しながら、元の単位(zのランクではなくzの単位)で凡例を取得する最も簡単な方法、または最も「真のggplot2」の方法は何ですか?色付きのポイント?

どういうわけか、これはrescaler()を使用しているように感じますが、任意の変換などでrescaler()を使用する方法がわかりません。一般に、より明確な例が役立ちます。

よろしくお願いします。

4

1 に答える 1

9

scales 特に パッケージを見てください?trans

値またはより極端な値を取得する確率を考慮して色をマップする変換は、合理的である必要があると思います(基本的にpnorm(z)

私はそれscale_colour_continuous(trans = probability_trans(distribution = 'norm')がうまくいくはずだと思いますが、それは警告を投げます。

そこで、新しい変換を定義しました(を参照?trans_new

変換と逆を定義する必要があります

library(scales)
norm_trans <- function(){
  trans_new('norm', function(x) pnorm(x), function(x) qnorm(x))
}

badVersion + geom_point() + scale_colour_continuous(trans = 'norm'))

ここに画像の説明を入力してください

付属のものを使用するprobability_transと警告がスローされ、機能しないようです

# this throws a warning
badVersion + geom_point+
  scale_colour_continuous(trans = probability_trans(distribution = 'norm'))

## Warning message:
## In qfun(x, ...) : NaNs produced

ここに画像の説明を入力してください

于 2012-08-30T04:24:33.400 に答える