You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用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ï

火山引擎 最新活动