我有這樣的資料
我有這樣的資料
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 添加到每個 SD 但我不知道該怎么做資料 ?
geom_errorbar(aes(ymin = Value-sd, ymax = Value sd))
uj5u.com熱心網友回復:
是的,你應該重塑你的資料。您需要將中位數和 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個地塊:
樣品1.png

樣本2.png

Sample3.png

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/471592.html
上一篇:用戶選擇主題R閃亮的ggplot
