如何从数据框中制作具有特定值的线图

How to make a lineplot with specific values out of a dataframe

我有一个 df 如下:

Variable        Value
G1_temp_0       37.9
G1_temp_5       37.95333333
G1_temp_10      37.98333333
G1_temp_15      38.18666667
G1_temp_20      38.30526316
G1_temp_25      38.33529412
G1_mean_Q1      38.03666667
G1_mean_Q2      38.08666667
G1_mean_Q3      38.01
G1_mean_Q4      38.2
G2_temp_0       37.9
G2_temp_5       37.95333333
G2_temp_10      37.98333333
G2_temp_15      38.18666667
G2_temp_20      38.30526316
G2_temp_25      38.33529412
G2_mean_Q1      38.53666667
G2_mean_Q2      38.68666667
G2_mean_Q3      38.61
G2_mean_Q4      38.71

我喜欢用两条线制作线图,反映值“G1_mean_Q1 - G1_mean_Q4”和“G2_mean_Q1 - G2_mean_Q4”

最后应该大致是这样的,x轴应该代表不同的变量:

我的主要问题是,如何用这个 df 得到一个基本的线图。 我试过这样的东西,

ggplot(df, aes(x = c(1:4), y = Value) + geom_line()

但我总是有一些错误。如果有人可以帮助我,那就太好了。谢谢

下次请post您的数据dput(data)。它使您更容易将数据读入 R。

您需要告诉 ggplot 哪些是组。您可以使用 aes(group = Sample) 执行此操作。为此,您需要稍微重组数据框并将变量分成不同的列。

library(tidyverse)
dat <- structure(list(Variable = structure(c(5L, 10L, 6L, 7L, 8L, 9L, 
                                             1L, 2L, 3L, 4L, 15L, 20L, 16L, 17L, 18L, 19L, 11L, 12L, 13L, 
                                             14L), .Label = c("G1_mean_Q1", "G1_mean_Q2", "G1_mean_Q3", "G1_mean_Q4", 
                                                              "G1_temp_0", "G1_temp_10", "G1_temp_15", "G1_temp_20", "G1_temp_25", 
                                                              "G1_temp_5", "G2_mean_Q1", "G2_mean_Q2", "G2_mean_Q3", "G2_mean_Q4", 
                                                              "G2_temp_0", "G2_temp_10", "G2_temp_15", "G2_temp_20", "G2_temp_25", 
                                                              "G2_temp_5"), class = "factor"), Value = c(37.9, 37.95333333, 
                                                                                                         37.98333333, 38.18666667, 38.30526316, 38.33529412, 38.03666667, 
                                                                                                         38.08666667, 38.01, 38.2, 37.9, 37.95333333, 37.98333333, 38.18666667, 
                                                                                                         38.30526316, 38.33529412, 38.53666667, 38.68666667, 38.61, 38.71
                                                              )), class = "data.frame", row.names = c(NA, -20L))


dat <- dat %>% 
  filter(str_detect(Variable, "mean")) %>% 
  separate(Variable, into = c("Sample", "mean", "time"), sep = "_")


g <- ggplot(data=dat, aes(x=time, y=Value, group=Sample)) +
  geom_line(aes(colour=Sample))
g

reprex package (v0.3.0)

于 2020-07-20 创建