r - 使用 stat_summary 计算两个不同分组的平均值并绘制在一个图中
问题描述
我在同一图中使用 stat_summary 绘制两个计算均值时遇到问题。
我正在使用 ggplot 和 stat_summary 绘制基于变量 A 分组的数据集的平均值。变量 A 的值可以是 1、2、3、4。相同的数据也有变量 B,它的值可以是 1,2。因此,我可以使用在变量 A 之后分组的数据来绘制图,得到 4 行。我还可以使用在变量 B 之后分组的数据来绘制一个图,其中我得到 2 行。但是如何将它们绘制在同一个图中,以便得到 6 行?我使用 mtcars 数据集做了一个类似的例子:
library(ggplot2)
mtcars$cyl <- as.factor(mtcars$cyl)
mtcars$vs <- as.factor(mtcars$vs)
mtcars
plot1 <- ggplot(mtcars, aes(x=gear, y=hp, color=cyl, fill=cyl)) +
stat_summary(geom='ribbon', fun.data = mean_cl_normal, fun.args=list(conf.int=0.95), alpha=0.5) +
stat_summary(geom='line', fun.y = mean, size=1)
plot1
plot2 <- ggplot(mtcars, aes(x=gear, y=hp, color=vs, fill=vs)) +
stat_summary(geom='ribbon', fun.data = mean_cl_normal, fun.args=list(conf.int=0.95), alpha=0.5) +
stat_summary(geom='line', fun.y = mean, size=1)
plot2
到目前为止,我的印象是,由于我从 ggplot(xxx) 开始,其中 xxx 定义了数据和分组,我不能将它与另一个 ggplot 与另一个分组结合起来。如果我可以启动 ggplot() 而不在参数中定义任何内容,而只在 stat_summary 的参数中定义数据和分组,我觉得这将是解决方案。但如果可能的话,我无法弄清楚如何像那样使用 stat_summary 。
解决方案
您可以添加更多层,分别aes
为每个层定义:
ggplot(mtcars) +
stat_summary(aes(x=gear, y=hp, color=paste('cyl:', cyl), fill = paste('cyl:', cyl)), geom='ribbon', fun.data = mean_cl_normal, fun.args=list(conf.int=0.95), alpha=0.5) +
stat_summary(aes(x=gear, y=hp, color=paste('cyl:', cyl)), geom='line', fun.y = mean, size=1) +
stat_summary(aes(x=gear, y=hp, color=paste('vs:', vs), fill=paste('vs:', vs)), geom='ribbon', fun.data = mean_cl_normal, fun.args=list(conf.int=0.95), alpha=0.5) +
stat_summary(aes(x=gear, y=hp, color=paste('vs:', vs)), geom='line', fun.y = mean, size=1)
推荐阅读
- r - 用于基于不均匀日期创建不均匀组的 R 函数
- python - 这是我的第一个 python 项目,我一直试图在屏幕上向下移动一个简单的矩形,因为俄罗斯方块块掉下来但失败了
- laravel - 如何获取集合关系中的总项目
- google-apps-script - 将 html 文件中的所有表格数据抓取到 Google 工作表中
- html - shopify 中的样式部分
- python - 通过 Kinesis firehose 将流数据传输到 S3 的代码在调用 PutRecord 操作时不断产生错误:(UnknownOperationException)
- blockchain - 了解区块链智能合约
- reactjs - 在其他页面 React 的 URL 中显示数据感谢 id
- html - 为什么位置:固定;不适用于 justify-content: space-between;?
- google-chrome-extension - manifest v3 Chrome 扩展中的 web_accessible_resources