如何用ggplot在同一图中绘制曲线比较数据框的前后变量值?
使用ggplot对比x_before和x_after的曲线绘制方案
要在同一图表中用曲线对比这两个变量,需要先将宽格式数据转换为长格式(ggplot更适配长数据结构),再调用ggplot2绘图。以下是完整实现代码:
# 加载所需包 library(ggplot2) library(dplyr) library(tidyr) # 定义数据框 df1 = data.frame(x_before = c(1,2,3,4,5,1,2,3,2,1), x_after = c(2,1,2,3,6,7,2,2,2,3)) # 转换为长格式并添加行号作为x轴(代表数据顺序) df_long <- df1 %>% mutate(index = row_number()) %>% pivot_longer(cols = c(x_before, x_after), names_to = "variable", values_to = "value") # 绘制对比曲线 ggplot(df_long, aes(x = index, y = value, color = variable)) + geom_line(linewidth = 1) + # 设置线条粗细 labs(title = "x_before与x_after数值对比曲线", x = "数据序号", y = "数值", color = "变量") + theme_minimal() # 使用简洁主题
代码说明:
mutate(index = row_number()):生成数据的行号作为x轴,确保曲线按原始数据顺序绘制pivot_longer():将宽格式的x_before和x_after列转为长格式,新增variable列标记变量名,value列存储对应数值aes(color = variable):通过颜色区分两条曲线,也可以替换为linetype = variable设置不同线型labs()和theme_minimal()用于优化图表的可读性和美观度
如果需求是直接对比两个变量的对应数值(而非按样本顺序),可以用以下方式绘制连线曲线:
ggplot(df1, aes(x = x_before, y = x_after)) + geom_path(color = "blue") + # 绘制连接各点的曲线 geom_point() + # 标记原始数据点 labs(title = "x_before与x_after对应数值连线", x = "x_before", y = "x_after") + theme_minimal()
内容的提问来源于stack exchange,提问作者An116
相关产品推荐
相关产品推荐

