0

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

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

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

任何帮助将不胜感激!

4

2 回答 2

0

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

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 的例子解决了这个问题,我更喜欢情节的视觉效果。所以这绝对是解决这个问题的更好方法。谢谢!

于 2021-01-09T14:14:08.737 回答
0

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

最好使用 eg 将数据重新整形为长格式tidyr::pivot_longer,这给了我们两个新的列,一个带有变量的名称,一个带有相应的值。重塑后,您可以将值映射到 y 并通过将变量列映射到 和 来设置不同的形状和shape线型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'

于 2021-01-09T12:46:12.590 回答