1. ホーム
  2. r

[解決済み] ggplot::stat_density2d の ...level... は何を意味するのでしょうか?

2022-02-09 05:27:25

質問

ヒートマップを作成する際に fill 変数に設定された ..level.. .

この例のように。

library(MASS)
ggplot(geyser, aes(x = duration, y = waiting)) + 
    geom_point() + 
    geom_density2d() + 
    stat_density2d(aes(fill = ..level..), geom = "polygon")

を疑っています。 ..level.. というのは fill は、存在するレイヤーの相対的な量に設定されているのでしょうか?また、この2次元密度プロットの解釈の仕方、各輪郭が何を表しているかなど、良い例をどなたか教えてください。ネットで検索してみましたが、適切なガイドが見つかりませんでした。

どのように解決するのですか?

hrbrmstrが提供した回答を展開すると -- まず最初に、呼び出しが geom_density2d() は冗長です。つまり、同じ結果を得るには、次のようにします。

library(ggplot2)
library(MASS)

gg <- ggplot(geyser, aes(x = duration, y = waiting)) + 
    geom_point() + 
    stat_density2d(aes(fill = ..level..), geom = "polygon")

この密度推定値を視覚化する他の方法をいくつか考えてみましょう。

base_plot <- ggplot(geyser, aes(x = duration, y = waiting)) + 
  geom_point()

base_plot + 
  stat_density2d(aes(color = ..level..))

base_plot + 
  stat_density2d(aes(fill = ..density..), geom = "raster", contour = FALSE)

base_plot +
  stat_density2d(aes(alpha = ..density..), geom = "tile", contour = FALSE)

しかし、この時点ではもう geom_point() .

最後に、密度の推定値の帯域幅を制御できることに注意してください。これを行うには xy に対する帯域幅の引数 h (参照 ?kde2d ):

base_plot +
  stat_density2d(aes(fill = ..density..), geom = "raster", contour = FALSE,
                 h = c(2, 5))

ここでも geom_point() の呼び出しの後ろにあるため、隠されています。 stat_density2d() .