我有一个包含基因表达水平信息的数据。
列名是基因名,行名是病人ID。
如何制作条形图,其中X轴是基因名称,Y轴是表达水平?
如果不将A基因和B基因合并到同一列并在单独的列中键入基因A和B,我就无法找到在ggplot2中标记A基因和B基因的方法。
在不改变数据结构的情况下,必须有一种简单的方法来做到这一点,但我找不到。
#Example Data
df <- data.frame(1:5,3:7)
colnames(df) <- c("Gene_A","Gene_B")
row.names(df) <- c("Pat_A","Pat_B","Pat_C","Pat_D","Pat_E")我尝试使用一种离散的、连续的方法,就像ggplot2备忘单所建议的那样。
f <- ggplot(mpg, aes(class, hwy)) + geom_...()在上面的代码类中是基因名称,但是我不能确定我应该使用什么来处理hwy。
发布于 2022-01-19 05:19:55
您可以使用tidyverse进行类似的操作,您可以将所有信息导入ggplot,这样就不会更改原始数据。首先,我对数据进行总结,然后将汇总数据导入ggplot,绘制两个条形图和错误图。
library(tidyverse)
df %>%
pivot_longer(everything()) %>%
group_by(name) %>%
summarise(mean = mean(value),
sd = sd(value)) %>%
ggplot(., aes(name, mean)) +
geom_col(fill=c("black", "grey"), colour="black") +
geom_errorbar(aes(ymin = mean - sd, ymax = mean + sd), width=0.2) +
xlab("Gene") +
ylab("Expression Level") +
theme_classic()输出

或者,如果您根本不想支点,那么您可以手动构建每个条。
ggplot(df) +
geom_bar(aes(x = "Gene_A", y = Gene_A, colour = "Gene_A"), stat = "summary", fun = "mean", fill=c("black"), colour="black") +
geom_bar(aes(x = "Gene_B", y = Gene_B, colour = "Gene_B"), stat = "summary", fun = "mean", fill=c("grey"), colour="black") +
xlab("Gene") +
ylab("Expression Level") +
theme_classic()输出

https://stackoverflow.com/questions/70765003
复制相似问题