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

ggplot2绘制同尺度双Y变量散点图:如何修改美学样式并添加独立回归线(适配APA格式)

解决APA风格双变量散点图(含独立回归线)的问题

看起来你已经走了一半的路啦!问题的核心在于你的数据目前是宽格式(两个Y变量列:valence和arousal),而ggplot更适合处理长格式数据(把这两个变量合并成一列,用另一列标记类别)。这样我们就能轻松用视觉属性区分两组数据,并自动生成各自的回归线。

下面是完整的解决方案:

步骤1:将数据转换为长格式

首先用tidyr包的pivot_longer函数把宽数据转成长数据(如果还没装tidyr的话,先运行install.packages("tidyr")):

library(tidyr)
library(ggplot2)

# 转换数据格式
dat_long <- dat %>%
  pivot_longer(cols = c(valence, arousal),  # 指定要合并的Y变量列
               names_to = "variable",       # 新列的名称,用来标记是valence还是arousal
               values_to = "score")         # 新列的名称,存储对应的数值

步骤2:绘制带区分样式和独立回归线的散点图

现在用长数据来绘图,我们可以用shape参数区分实心/空心点,同时让geom_smooth自动为每个变量生成回归线:

sp_both <- ggplot(dat_long, aes(x = STAIT, y = score, shape = variable)) +
  geom_point(size = 2) +  # 设置点大小,让样式更清晰
  geom_smooth(method = lm, se = TRUE, fullrange = TRUE, colour = "black") +  # 每个变量独立生成回归线
  labs(x = "STAI-T score", 
       y = "valence/arousal score",
       shape = "Variable") +  # 设置图例标题
  scale_shape_manual(values = c(1, 16)) +  # 手动指定样式:1=空心圆,16=实心圆
  apatheme  # 应用你的APA主题

# 查看图形
print(sp_both)

代码解释

  • pivot_longer:把原来的两个Y变量列合并成两列:variable(标记是valence还是arousal)和score(存储对应的数值),这是让ggplot能分组处理的关键。
  • aes(shape = variable):告诉ggplot根据variable列的值来区分点的形状,同时geom_smooth也会自动按这个分组生成各自的回归线和置信区间。
  • scale_shape_manual:手动指定形状,1是空心圆,16是实心圆,你也可以根据需求换成其他形状(比如2=空心三角,17=实心三角等)。
  • 所有的APA主题设置(apatheme)会正常应用,不会影响分组和回归线的显示。

这样你就能得到一张符合需求的图:同一个X轴,Y轴是合并后的分数,用实心/空心点区分两个变量,同时每条变量都有自己的回归线和置信区间,完全符合APA格式的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 04:17:38