首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R基因表达谱图

R基因表达谱图
EN

Stack Overflow用户
提问于 2020-08-05 15:56:35
回答 1查看 1.2K关注 0票数 2

我试图在R中绘制基因表达剖面图,我输入的数据是一个数据框架,其中第1列有基因名,下一栏2:18是多种癌症类型。这是一小部分数据。

我想要的是做一个图,在x轴上和每个基因的y=axis表达线上都有样本。像这样的东西。

但是,与x轴上的时间点不同,它应该有巨蟹座类型(列),到目前为止,我已经尝试过、ggplot()、和,但是我一次又一次地失败了。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-05 20:51:11

数据格式

数据的当前格式称为wide format,但ggplot需要长格式数据。tidyr包(tidyverse的一部分)具有在宽格式和长格式之间进行转换的功能。在本例中,您需要函数tidyr::pivot_longer。例如,如果您在一个名为data.frame (或tibble)的df_gene_expr中拥有数据,则支点将类似于

代码语言:javascript
复制
library(tidyverse)

df_gene_expr %>%
  pivot_longer(cols=2:18, names_to="cancer_type", values_to="gene_expr") %>%
  filter(ID == "ABCA8") %>%
  ggplot(aes(x=cancer_type, y=gene_expr)) +
  geom_point()

在这里我们挑出了唯一的基因"ABCA8"。将geom_point()更改为您实际想要的任何几何图形(可能是geom_bar(stat='identity') )。

离散趋势线

我不确定geom_smooth是否完全合适--它的设计考虑了连续的数据。相反,我推荐stat_summary

这有一个小窍门,因为x轴上的离散cancer_type。也就是说,cancer_type变量应该是一个factor,但是我们将为stat_summary中的x值使用底层代码。否则,它会抱怨使用geom='line'是没有意义的。

一些类似的东西:

代码语言:javascript
复制
ggplot(df_long, aes(x=cancer_type, y=gene_expr)) +
  geom_hline(yintercept=0, linetype=4, color="red") +
  geom_line(aes(group=ID), size=0.5, alpha=0.3, color="black") +
  stat_summary(aes(x=as.numeric(cancer_type)), fun=mean, geom='line',
               size=2, color='orange')

来自假数据的输出

从技术上讲,同样的技巧(aes(x=as.numeric(cancer_type)))可以同样适用于geom_smooth,但我认为使用stat_summary更有意义,让我们显式地选择要计算的stat。例如,在这个上下文中,median可能更适合于摘要函数,而不是mean

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

https://stackoverflow.com/questions/63269006

复制
相关文章

相似问题

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