【发布时间】:2014-12-06 01:15:02
【问题描述】:
我想创建一个 ggplot,其中统计参数根据美学映射因素而变化。具体来说,我想使用 stat_density2d() 创建一个等高线图,我想将一个离散因子映射到颜色,并且我想为每个因子级别指定不同的中断值。
这是一个最小的工作示例:
d <- data.frame(x=c(rnorm(500), rnorm(500, 2)), y=rnorm(1000), z=c(rep("a", 500), rep("b", 500)))
ggplot(d, aes(x, y, fill=z)) +
stat_density2d(breaks=.05, geom="polygon", alpha=.5)
这就是我想要的,除了不同因素的休息时间是相同的。我正在寻找一种方法来为每个因素指定不同的中断值。一种方法是为每个因素创建一个单独的层:
ggplot() +
stat_density2d(data=d[d$z=="a",], aes(x, y), breaks=.05, geom="polygon", alpha=.5, fill="red") +
stat_density2d(data=d[d$z=="b",], aes(x, y), breaks=.1, geom="polygon", alpha=.5, fill="blue")
但这不可行,因为我失去了图例,而且对于两个以上因子水平的情况来说太麻烦了。
我想结合以上两种情况的优势。我几乎肯定我已经看到了一种方法来完成我正在尝试做的事情,但现在似乎找不到它,因为它是相关的。有人对可能的解决方案有想法吗?
【问题讨论】:
-
我从未在 ggplot 中看到过类似的方法,但我认为您可以通过 (a) 预处理数据或 (b) 转换数据来相当轻松地做到这一点.