使用ggplot stat_density_2d在levelplot中打破多边形

时间:2016-10-22 15:45:25

标签: r ggplot2 polygon density-plot

使用ggplot的{​​{1}}创建一个级别图我得到了“已损坏的”多边形。例如,下面示例中的外部。

如何解决这个问题,以获得顺畅的表格?

enter image description here

stat_density_2d

1 个答案:

答案 0 :(得分:2)

建立在@ hrbrmstr的答案上(至少在我的机器上,由于x标度不够宽,导致丢失一个数据点),稍微更复杂的方法是获取数据的限制,设置缩放限制,然后将绘图限制重置回原始范围:

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