R语言按gear_ratio区间分组计算MPG均值并实现分色绘图
你给出的聚合结果表中Gear_ratio列存在格式笔误(如2.2.26、2.2.47为非法数值),实际运算前需先修正为合法数值。
直接在aggregate中按区间分组的实现
完全可以在第一次调用aggregate时就完成区间分组计算,只需要用cut()函数对gear_ratio做分箱处理作为分组依据即可:
dfdata=data.frame(cars10) # 定义区间边界和对应标签 gear_breaks <- c(2.0, 2.5, 3.0, 3.5, 4.0) gear_labels <- c("2.0-2.5", "2.5-3.0", "3.0-3.5", "3.5-4.0") # 一步完成按区间分组计算MPG均值 agg_interval <- aggregate( x = dfdata$mpg, by = list(gear_interval = cut(dfdata$gear_ratio, breaks = gear_breaks, labels = gear_labels, include.lowest = TRUE)), FUN = mean, na.rm = TRUE ) # 重命名结果列 colnames(agg_interval) <- c("gear_interval", "mean_mpg")
参数include.lowest = TRUE用于保证区间左端点被包含在对应分组中,避免边界值(如2.5、3.0等)被错误归类。
分区间着色绘图实现
可以根据分组自定义配色,以下分别给出基础绘图和ggplot2的实现示例:
基础绘图(base plot)
# 自定义四个分组的颜色 group_colors <- c("#F8766D", "#7CAE00", "#00BFC4", "#C77CFF") # 绘制柱状图 barplot( height = agg_interval$mean_mpg, names.arg = agg_interval$gear_interval, col = group_colors, xlab = "齿比区间", ylab = "平均MPG", main = "不同齿比区间的平均油耗表现" ) # 添加图例 legend("topright", legend = agg_interval$gear_interval, fill = group_colors)
ggplot2绘图
library(ggplot2) ggplot(agg_interval, aes(x = gear_interval, y = mean_mpg, fill = gear_interval)) + geom_col() + scale_fill_manual(values = group_colors) + labs(x = "齿比区间", y = "平均MPG", title = "不同齿比区间的平均油耗表现") + theme_minimal()
如果你已经提前计算了每个单独齿比的MPG均值,只需要对该结果的Gear_ratio列用同样的cut()逻辑做分箱,再做一次聚合即可得到区间维度的均值,但直接从原始数据计算的结果准确性更高。
内容的提问来源于stack exchange,提问作者btk666
相关产品推荐
相关产品推荐

