首页 > 解决方案 > 多变量曲线图

问题描述

我有一个包含三个 X 变量(X1、X2、X3)和一个 Y 变量(Y)的数据集。X 变量的范围是 (-4 - 4) 和 Y (400 - 540)。

可以在下面生成数据集样本

df1 <- data.frame( Y = rnorm(1000,400:450),
           X1 = rnorm(1000,-4:5),
           X2 = rnorm(1000,-4:5),
           X3 = rnorm(1000,-4:5)
           )

我希望绘制一个图,其中三个 X 变量看起来像曲线,一条线显示 Y 的平均值。就像这个

我试过 ggplot geom_line 但没有白费,

ggplot(read, aes(x=X1, y=Y)) + geom_line(linetype = 2)

我只能获得这样的密集线

标签: rplot

解决方案


library(tidyverse)

df1 = tibble(Y = rnorm(1000),
             x = seq(-4, 5, length.out =  1000),
             X1 = -2*x^2+7*x+1,
             X2 = -4*x^2+7.5*x+3,
             X3 = -2*x+10
)

df = df1 %>% pivot_longer(X1:X3) %>% 
  mutate(name = name %>% factor(labels = c("At school in general", 
                                           "Outside school for Schoolwork",
                                           "Outside school for leisure"))) 

df %>%  
  ggplot(aes(x, value, color=name))+
  geom_line(aes(linetype=name))+
  geom_hline(yintercept =mean(df$Y))+
  annotate("text", label="Mean reading perofmence", x=3, y=2)+
  labs(x ="ITC use", y = "Reading performance")

在此处输入图像描述


推荐阅读