首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ggplot2中应用分组级别的函数

在ggplot2中应用分组级别的函数
EN

Stack Overflow用户
提问于 2018-07-12 10:32:16
回答 1查看 201关注 0票数 3

简短版本

ggplot2中,我必须做什么才能在拆分xy之后应用美学的data内的函数(例如使用groupcolor)?

长版本

鼓舞人心的例子

代码语言:javascript
复制
my_data <- data.table(class = sort(rep(x = c('a','b','c'), times = 3)))

hidden <- c(10, 15,  80,
             0, 50, 100,
             5, 90,  95)

my_data[, rank := ecdf(hidden)(hidden)]

然后我想绘制每个类的CDF与整体CDF的关系图,这有助于我查看隐藏值在类之间的分布是否一致。

我最好的尝试

经过几次迭代后,我很惊讶这不起作用。我认为,通过将组设置为最高级别的美学,该函数将以与统计数据相同的方式应用。相反,ecdf(rank)(rank)将再次应用于整个列,这将导致y等于x

代码语言:javascript
复制
ggplot(data = my_data, mapping = aes(color = class)) +
  geom_line(mapping = aes(
    x = rank,
    y = ecdf(rank)(rank)
  ))

代码语言:javascript
复制
ggplot(data = data, mapping = aes(color = class)) +
  geom_density(mapping = aes(
    x = rank,
    y = ..scaled..
  ))

我最好的解决办法

通过split-apply-combine的魔力(这里是使用data.table中的by实现的),我可以向数据中添加额外的列来实现这一点。

代码语言:javascript
复制
data[, class_rank := ecdf(value)(value), class]
ggplot(data = data, mapping = aes(color = class)) +
  geom_line(mapping = aes(
    x = rank,
    y = class_rank
  ))

在我的数据上添加额外的列并不是最糟糕的事情,但是ggplot2已经做了足够多很棒的事情,我觉得它就在那里,我就是找不到它。

EN

回答 1

Stack Overflow用户

发布于 2018-07-14 00:56:05

  1. 美学被映射到rhs =上的表达式返回的值,该表达式应用于通过data传递的数据。通过映射其他美学进行分组在此point.
  2. grouping中不起作用,仅影响绘图层内的操作,因此应用与分组有关的函数的唯一方法是在ggplot统计数据内。stat_smooth().

  • 就是应用函数的很好的统计示例

因此,我认为在“ggplot2”中实现你所要求的东西的唯一方法是使用一种还不存在的美学。定义一个新的统计数据来总结x美学忽略组和y美学尊重分组应该是可行的,我认为,但值得付出努力吗?可以很容易地在“tidyverse”中预处理数据,如下所示,或者使用“data.table”进行预处理,如您自己的示例所示……

代码语言:javascript
复制
library(ggplot2)
library(dplyr)

my_data <- data.frame(class = sort(rep(x = c('a','b','c'), times = 3)),
                      hidden = c(10, 15,  80, 0, 50, 100, 5, 90,  95))

my_data %>%
  mutate(rank = ecdf(hidden)(hidden)) %>%
  group_by(class) %>%
  mutate(class_rank = ecdf(hidden)(hidden)) %>%
  ggplot(aes(rank, class_rank, color = class)) +
    geom_line()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51296549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档