如何解决无需外部计算即可在 ECDF 上添加点
我想通过指定美学属性来突出显示具有多个 ECDF 的 ggplot
上的一些点。
我尝试了以下方法:
iris$dot <- ifelse(iris$Sepal.Length < 6,"<",">")
ggplot(iris,aes(x = Sepal.Length,col = Species)) +
stat_ecdf() +
geom_point(aes(y = ecdf(Sepal.Length)(Sepal.Length),#stat_ecdf doesn't seem to support shape aes
shape = dot)) +
scale_shape_manual(values = c(3,NA))
但是,从图中可以看出,所有点都未对齐,可能是因为未考虑按 col = Species
进行分组。
是否有可能获得所需的结果,避免在 ggplot
调用之外进行计算?
解决方法
ggplot2 中包含的 geoms 似乎不会这样做。如果愿意,您可以编写自己的 geom,但更简单的方法是自己进行数据操作。 ggplot 当你让它做绘图时效果最好,而不是试图让它做所有的数据汇总
iris %>%
group_by(Species) %>%
mutate(y = ecdf(Sepal.Length)(Sepal.Length)) %>%
ggplot(aes(Sepal.Length,y,color=Species)) +
geom_step() +
geom_point(aes(shape=dot)) +
scale_shape_manual(values = c(3,NA))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。