如何从一个数据中生成一个连续的图形
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
我有这样的数据
我有这样的数据
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