如何在ggplot中绘制多变量折线图?求数据格式转换方法
宽格式数据转长格式+绘制多维度折线图(R)
一、宽转长格式(核心步骤)
用tidyr包的pivot_longer()函数可以快速将你的宽格式数据转换成「年份、维度、数值」的三列长格式:
# 安装并加载tidyr(首次使用需安装) install.packages("tidyr") library(tidyr) # 假设你的原始数据框名为df,Jahr是年份列,其余5列是各维度数据 df_long <- pivot_longer( data = df, cols = -Jahr, # 排除年份列,将剩余所有列转为维度-数值对 names_to = "维度", # 新增列,存储原维度列的名称 values_to = "数值" # 新增列,存储对应维度的数值 )
如果你的维度列有明确名称(比如收入不平等、教育不平等),也可以直接指定列名,更精准:
df_long <- pivot_longer( data = df, cols = c(收入不平等, 教育不平等, 健康不平等, 性别不平等, 区域不平等), names_to = "维度", values_to = "数值" )
二、用ggplot绘制多折线图
转换后的数据可以直接用于ggplot绘图,每个维度对应一条折线:
# 安装并加载ggplot2(首次使用需安装) install.packages("ggplot2") library(ggplot2) ggplot(df_long, aes(x = Jahr, y = 数值, color = 维度)) + geom_line(linewidth = 1) + # 设置折线宽度,让图更清晰 labs( x = "年份", y = "社会不平等程度", title = "各维度社会不平等随时间变化趋势", color = "维度类型" ) + theme_minimal() # 选用简洁的主题,也可以换成theme_bw()等
内容的提问来源于stack exchange,提问作者Moritary
相关产品推荐
相关产品推荐

