繁体   English   中英

ggplot2:y 轴上有两个变量(以相同比例测量)的散点图:如何更改美学并添加单独的回归线?

[英]ggplot2: scatterplot with two variables (measured on the same scale) on the y-axis: how do I change the aesthetics & add seperate regression lines?

对于我的论文,我在 R 中制作 APA 格式的散点图。 到目前为止,我的代码如下,它非常适合仅绘制一个带有置信区间和回归线的变量:

  scatterplot=ggplot(dat, aes(x=STAIT, y=valence))+
    geom_point()+
    geom_smooth(method=lm,se=T, fullrange=T,colour='black')+
    labs(x='STAI-T score', y='Report length')+
    apatheme

但是,我有两个变量最初是在相同的 0-100 范围内测量的:效价和唤醒。 我认为最好将两个变量添加到单个 plot 中,而不是两个单独的图,使用“价/唤醒分数”作为 ylab 和开/闭点来定义哪些数据点来自哪个变量,有点像这个例子是我在网上找到的。 但是,在该示例中,数据来自不同的组。 所以该代码不适用于我的数据。 我尝试了不同的方法,我得到的最接近的是以下代码:

sp.both=ggplot(dat, aes(x=STAIT))+
  geom_point(aes(y=valence)) +
  geom_point(aes(y=arousal)) +
  apatheme

这给了我一个散点图,其中包含在同一个 plot 中添加的两个变量的数据点。 但是,我需要一个分数的数据点在视觉上与另一个分数不同,并且我想为每个变量添加两条单独的回归线。 但是到目前为止我所做的一切都导致了错误,而且我在网上找不到任何试图做同样事情的人的例子。

任何帮助将不胜感激!

使用一些随机示例数据,您可以像这样实现您的期望:

最好使用例如tidyr::pivot_longer将数据重新整形为长格式,它为我们提供了两个新的列,一个带有变量的名称,一个带有相应的值。 重塑后,您可以 map y 上的值并通过将变量列映射到shape和 linetype 来设置不同的形状和linetype

library(ggplot2)
library(tidyr)

set.seed(42)
dat <- data.frame(
  STAIT = runif(20, 0, 1),
  valence = runif(20, 0, 1),
  arousal = runif(20, 0, 1)
)

dat_long <- dat %>%
  pivot_longer(c(valence, arousal), names_to = "var", values_to = "value")

ggplot(dat_long, aes(x = STAIT, y = value, linetype = var, shape = var)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE, color = "black", size = .5)
#> `geom_smooth()` using formula 'y ~ x'

我想出了一种方法,使用以下代码:

sp.both = ggplot(dat,aes(x=STAIT)) +
  geom_point(shape = 16, aes(y=arousal)) +
  geom_point(shape = 1, aes(y=valence)) +
  labs(x='STAI-T score', y= 'valence/arousal score')+
  geom_smooth(method=lm,se=T,fullrange=T,colour='black',aes(y=arousal))+
  geom_smooth(method=lm,se=T,fullrange=T,linetype ='dashed',colour='black',aes(y=valence))+
  apatheme

我唯一还没有弄清楚的是,现在如何添加具有线型(实线/虚线)和相应数据点(实线/开放)及其所属变量的图例。 但 Stefan 的示例解决了这个问题,我更喜欢 plot 在视觉上的外观。 所以这绝对是解决这个问题的更好方法。 谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM