2016-10-22 16 views
0

ggplotstat_density_2dを使用してレベルプロットを作成すると、が壊れて、のポリゴンが得られます。たとえば、以下の例の外側の例です。ggplot stat_density_2dを​​使用してレベルプロット内のポリゴンが壊れた

滑らかなフォームを得るにはどうすればよいですか? 、(Xスケールが十分に広くないので、少なくとも私のマシン上で、1つのデータポイントをオフのLOP)の@ hrbrmstrの答えに少しより複雑なアプローチを構築するには

enter image description here

set.seed(0) 
n <- 50 
d <- data.frame(x = rnorm(n, -.7, .5), 
       y = rnorm(n, 0, .8)) 
ggplot(d, aes(x, y)) + 
    geom_point() + 
    stat_density_2d(aes(fill = ..level..), alpha=.1, geom = "polygon") 
+1

再現可能な例として、 'scale_x_continuous(limits = c(-1.75、0.5))+ scale_y_continuous(limits = c(-2.0、2.1)) 'を実行できます。グラフの境界がポリゴンのクロップを避けるのに十分であることを確認するだけです。 – hrbrmstr

答えて

1

g <- ggplot(d, aes(x, y)) + 
    geom_point() + 
    stat_density_2d(aes(fill = ..level..), alpha=.1, geom = "polygon") 

dat_lims <- lapply(d, function(v) c(min(v), max(v))) 
plot_lims <- ggplot_build(g)$panel$ranges[[1]][c("x.range", "y.range")] 

g + 
    scale_x_continuous(limits = dat_lims$x * 1.1) + 
    scale_y_continuous(limits = dat_lims$y * 1.1) + 
    coord_cartesian(xlim = plot_lims$x.range, ylim = plot_lims$y.range) 

出力:

、データの限界を取得スケール限度を設定し、次いで、プロットは元の範囲に戻す制限リセットすること enter image description here
+0

これはかなり多かったです。_ "あなたは、グラフの境界がポリゴンのクロッピングを避けるのに十分であることを確認する必要があります。" _ – hrbrmstr

+0

@hrbrmstr - 権利が合意されました。うまくいけば、私の答えは、あなたが 'coord_cartesian'を通していつも元の範囲を回復できるので、あなたがスケールの限界を設定するのにもっと寛大であることを示唆することによって価値を加えました。 –

関連する問題