如何从一个数据中生成一个连续的图形

how to make a consecutive figure from one data

我有这样的数据

我有这样的数据

df<-structure(list(Accession = c("Sample1", "Sample1", "Sample1", 
"Sample1", "Sample1", "Sample1", "Sample2", "Sample2", "Sample2", 
"Sample2", "Sample2", "Sample2", "Sample3", "Sample3", "Sample3", 
"Sample3", "Sample3", "Sample3"), Var = c("Control_median", "Control_SD", 
"H1_median", "H1_SD", "H7_median", "H7_SD", "Control_median", 
"Control_SD", "H1_median", "H1_SD", "H7_median", "H7_SD", "Control_median", 
"Control_SD", "H1_median", "H1_SD", "H7_median", "H7_SD"), Value = c(278000, 
128549.6013, 247000, 1665333.7, 0, 116047.4041, 0, 0, 173000, 
112837.6415, 157000, 101154.9966, 226000, 196763.8178, 602000, 
362860.8549, 945000, 598936.5576)), class = "data.frame", row.names = c(NA, 
-18L))

它在 3 个条件下有 3 个样本。我想绘制 3 个数字

有人知道怎么做吗? SD代表标准偏差

我想画一个线图,所以我试着画一个,然后看如何画几个

我在所有条件下取第一个样本,然后像这样绘制它

 mydd<- df[1:6,]
    ggplot(mydd, aes(x = Var, y = Value))+
      geom_line(linetype = "dashed") +
      geom_point() +
      scale_x_discrete(limit = c("Control_median","H1_median","H7_median" ))

现在的问题是添加 SD 我想将 SD 添加到每个,但我不知道该怎么做我尝试使用它,但这些值相互重叠,我不知道该怎么做,也许我应该重新排列我的数据?

geom_errorbar(aes(ymin = Value-sd, ymax = Value+sd))

是的,您应该重塑数据。您需要中位数和标准差在它们自己的列中,因此您可以执行以下操作:

library(tidyverse)

pivot_wider(df, names_from = Var, values_from = Value) %>%
  pivot_longer(-1, names_pattern = "^(.*)_(.*)$", 
               names_to = c("group", ".value")) %>%
  split(.$Accession) %>%
  map(~ {ggplot(.x, aes(group, median)) +
              geom_point(size = 3) +
              geom_errorbar(aes(ymin = median - SD, ymax = median + SD),
                            width = 0.5, colour = "gray25") +
              theme_light(base_size = 16) +
              scale_y_continuous(labels = scales::comma) +
              labs(title = .x$Accession[1])
        ggsave(paste0(.x$Accession[1], ".png"))}
  )

这将保存以下 3 个地块:

Sample1.png

Sample2.png

Sample3.png