You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中绘制纵向数据:按性别展示抑郁随时间趋势的问题

我太懂这种被一堆杂乱线条支配的烦恼了!本来想清晰展示男女群体的抑郁水平趋势,结果出来每个ID一条线,完全看不到群体规律对吧?别慌,咱们分两种常用工具来解决这个问题——R的ggplot2和Python的Seaborn,都是可视化的好手。


用R的ggplot2实现

首先咱们得先把数据按性别和时间分组,算出每个群体在每个时间点的抑郁水平均值(毕竟每个时间点有多个个体数据,均值才能代表群体趋势):

# 加载必要的包
library(tidyverse)

# 假设你的数据框叫df
df <- data.frame(
  ID = c(1,1,1,2,2,2,3,3,3),
  DEPRESSION = c(5,5,4,3,6,8,2,2,2),
  TIME = c(1,2,3,1,2,3,1,2,3),
  GENDER = c("MALE","MALE","MALE","MALE","MALE","MALE","FEMALE","FEMALE","FEMALE")
)

# 先聚合数据:按性别和时间分组,计算平均抑郁水平
grouped_df <- df %>%
  group_by(GENDER, TIME) %>%
  summarise(MEAN_DEPRESSION = mean(DEPRESSION), .groups = "drop")

# 绘制趋势线
ggplot(grouped_df, aes(x = TIME, y = MEAN_DEPRESSION, color = GENDER)) +
  geom_line(linewidth = 1) +  # 绘制趋势线
  geom_point(size = 2) +      # 添加每个时间点的均值点
  labs(title = "抑郁水平随时间变化的群体趋势",
       x = "时间点",
       y = "平均抑郁水平",
       color = "性别") +
  theme_minimal()

这里关键是先聚合数据,把每个性别每个时间点的均值算出来,而不是直接用原始数据绘图——原始数据里每个ID的重复测量会导致ggplot默认按个体分组,画出一堆线条。


用Python的Seaborn实现

Seaborn其实很贴心,默认就会帮你处理分组均值的计算,不过咱们也可以先手动聚合确保清晰:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 构造数据框
df = pd.DataFrame({
    "ID": [1,1,1,2,2,2,3,3,3],
    "DEPRESSION": [5,5,4,3,6,8,2,2,2],
    "TIME": [1,2,3,1,2,3,1,2,3],
    "GENDER": ["MALE","MALE","MALE","MALE","MALE","MALE","FEMALE","FEMALE","FEMALE"]
})

# 方法一:手动聚合数据
grouped_df = df.groupby(["GENDER", "TIME"])["DEPRESSION"].mean().reset_index()

sns.lineplot(data=grouped_df, x="TIME", y="DEPRESSION", hue="GENDER", linewidth=2, marker="o")
plt.title("抑郁水平随时间变化的群体趋势")
plt.xlabel("时间点")
plt.ylabel("平均抑郁水平")
plt.show()

# 方法二:直接用Seaborn自动计算均值(更简便)
sns.lineplot(data=df, x="TIME", y="DEPRESSION", hue="GENDER", estimator="mean", linewidth=2, marker="o")
plt.title("抑郁水平随时间变化的群体趋势")
plt.xlabel("时间点")
plt.ylabel("平均抑郁水平")
plt.show()

这里的estimator="mean"就是告诉Seaborn,对每个性别每个时间点的所有数据取均值来绘制趋势线,避免了每个ID单独成线的问题。


小提醒

你之前可能不小心把ID映射到了group或者color参数里,导致绘图工具按个体分组。只要确保分组依据是GENDER,并且基于群体均值来画,就能得到你想要的两条清晰趋势线啦!

内容的提问来源于stack exchange,提问作者Oscar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:22:22