首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用ggplot2绘制条形图中的基因表达数据?

如何用ggplot2绘制条形图中的基因表达数据?
EN

Stack Overflow用户
提问于 2022-01-19 03:29:40
回答 1查看 337关注 0票数 0

我有一个包含基因表达水平信息的数据。

列名是基因名,行名是病人ID。

如何制作条形图,其中X轴是基因名称,Y轴是表达水平?

如果不将A基因和B基因合并到同一列并在单独的列中键入基因A和B,我就无法找到在ggplot2中标记A基因和B基因的方法。

在不改变数据结构的情况下,必须有一种简单的方法来做到这一点,但我找不到。

代码语言:javascript
复制
#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备忘单所建议的那样。

代码语言:javascript
复制
f <- ggplot(mpg, aes(class, hwy)) + geom_...()

在上面的代码类中是基因名称,但是我不能确定我应该使用什么来处理hwy。

这是我想要得到的一个例子图

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-19 05:19:55

您可以使用tidyverse进行类似的操作,您可以将所有信息导入ggplot,这样就不会更改原始数据。首先,我对数据进行总结,然后将汇总数据导入ggplot,绘制两个条形图和错误图。

代码语言:javascript
复制
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()

输出

或者,如果您根本不想支点,那么您可以手动构建每个条。

代码语言:javascript
复制
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()

输出

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70765003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档