首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在使用stat_summary时对用geom = "step“绘制的不同曲线进行归一化

如何在使用stat_summary时对用geom = "step“绘制的不同曲线进行归一化
EN

Stack Overflow用户
提问于 2018-06-08 07:50:46
回答 1查看 158关注 0票数 1

这是我的代码。数据集是人工生成的,以模拟类似于我的实际问题的数据。

代码:

library(ggplot2)
DataSet1 <- data.frame("Cat" = rep("A",10000), "Bin" = rep(c(-49:50),100), 
                       "Value" = c(seq(0,4.9, by=0.1),
                                   seq(4.9,0, by=-0.1)) * rep(rnorm(100,50,1),100))
DataSet2 <- data.frame("Cat" = rep("B",10000), "Bin" = rep(c(-49:50),100), 
                       "Value" = c(seq(0,4.9, by=0.1),
                                   seq(4.9,0, by=-0.1)) * rep(rnorm(100,75,1),100))
DataSet3 <- data.frame("Cat" = rep("C",10000), "Bin" = rep(c(-49:50),100), 
                       "Value" = c(seq(0,4.9, by=0.1),
                                   seq(4.9,0, by=-0.1)) * rep(rnorm(100,100,1),100))
DataSet <- rbind(DataSet1, DataSet2, DataSet3)

d <- ggplot(data = DataSet, aes(Bin, Value, color = Cat))
d + stat_summary(fun.y = sum, geom = 'step', size = 1)

我的结果是:

我想做的是:

对这些曲线图进行归一化,即将每个面元宽度的总和除以该曲线的总值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-08 08:45:13

据我所知,stat_summary并不意味着同时对xy的所有值进行操作,因此这种按组汇总的类型在ggplot中是不可能的。在这样的情况下,通常最好提前计算总结,然后绘制出来。使用dplyr简化摘要:

library(dplyr)

DataSet <- DataSet %>% 
  group_by(Cat, Bin) %>% 
  summarize(Value = sum(Value)) %>% 
  group_by(Cat) %>% 
  mutate(Value = Value / sum(Value))

d <- ggplot(data = DataSet, aes(Bin, Value, color = Cat))
d + stat_summary(fun.y = mean, geom = 'step', size = 1)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50751592

复制
相关文章

相似问题

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