使用R语言ggplot2绘制年龄密度图并叠加平均金额散点图
解决方法:用ggplot2绘制年龄密度图+平均金额散点图
没问题,我来帮你实现这个需求!咱们一步步来,先处理数据,再画图:
1. 准备并处理数据
首先,咱们把你提供的数据集导入R,注意金额列里的逗号是小数点分隔符,得先转换成R能识别的数值格式。然后计算每个年龄对应的平均金额(也就是你说的fréquence moyenne):
# 加载需要的包 library(ggplot2) library(dplyr) # 创建原始数据集 df <- data.frame( Amount = c("201,1", "292,2", "218,2", "292,1"), Age = c(17, 19, 12, 19) ) # 处理金额列:把逗号换成小数点,转成数值型 df$Amount <- as.numeric(gsub(",", ".", df$Amount)) # 计算每个年龄的平均金额 avg_amount <- df %>% group_by(Age) %>% summarise(mean_amount = mean(Amount))
2. 绘制组合图
接下来咱们用ggplot2先画年龄的密度图,然后叠加平均金额的散点图。因为密度图的y轴是密度值,散点的y轴是平均金额,尺度差异大,所以咱们用双y轴来展示:
ggplot() + # 画年龄的密度图,填充半透明 geom_density(data = df, aes(x = Age), fill = "#619CFF", alpha = 0.5) + # 叠加平均金额的散点图,用红色突出 geom_point(data = avg_amount, aes(x = Age, y = mean_amount), color = "#F8766D", size = 4, shape = 19) + # 设置双y轴:右侧y轴对应平均金额 scale_y_continuous( name = "年龄密度", sec.axis = sec_axis(~., name = "fréquence moyenne (平均金额)") ) + # 设置标题和坐标轴标签 labs( x = "年龄", title = "年龄密度图 + 按年龄分组的平均金额散点" ) + # 用简洁的主题 theme_minimal()
代码说明:
geom_density():绘制年龄的密度分布,选了蓝色半透明填充,方便看清后面的散点geom_point():用红色大圆点标记每个年龄对应的平均金额,和密度图形成清晰对比scale_y_continuous():设置左侧y轴为密度值,右侧y轴为平均金额,完美适配两个图层的尺度差异theme_minimal():用清爽的极简主题让图表更易读
这样画出来的图就能同时展示年龄的分布密度,以及每个年龄对应的平均金额啦!
内容的提问来源于stack exchange,提问作者Naï




