答案 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)
输出: