R 中的基因表达谱图
Gene Expression Profile Plot in R
我正在尝试在 R 中绘制基因表达谱图。我的输入数据是一个数据框,其中第 1 列有基因名称,接下来 column2:18 是多种癌症类型。下面是一组小数据。
我想要的是制作一个图表,该图表在 x 轴和每个基因的 y=轴表达线中具有样本。
看起来像这样的东西。
但不是 x 轴上的时间点,它应该有癌症类型(列)
到目前为止,我已经尝试了 ggplot() 和 geneprofiler() 但我一次又一次地失败了。
任何帮助将不胜感激。
数据格式
数据的当前格式称为宽格式,但ggplot
需要长格式数据。 tidyr
包(tidyverse
的一部分)具有在宽格式和长格式之间转换的功能。在这种情况下,您需要函数 tidyr::pivot_longer
。例如,如果您在名为 df_gene_expr
的 data.frame(或小标题)中有数据,则枢轴将类似于
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
是否完全合适 - 它是根据 continuous-continuous 数据设计的。相反,我建议 stat_summary
.
这里有一个小技巧,因为 x-axis 上的离散 cancer_type
。即,cancer_type
变量应该是 factor
,但我们将在 stat_summary
中使用 x-values 的底层代码。否则,它会抱怨使用 geom='line'
没有意义。
大致情况:
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))
) 可以 equally-well 应用于 geom_smooth
,但我认为使用 stat_summary
仍然更有意义,让我们一个明确地选择要计算的统计数据。例如,在这种情况下,median
而不是 mean
可能更适合汇总函数。
我正在尝试在 R 中绘制基因表达谱图。我的输入数据是一个数据框,其中第 1 列有基因名称,接下来 column2:18 是多种癌症类型。下面是一组小数据。
我想要的是制作一个图表,该图表在 x 轴和每个基因的 y=轴表达线中具有样本。
看起来像这样的东西。
但不是 x 轴上的时间点,它应该有癌症类型(列) 到目前为止,我已经尝试了 ggplot() 和 geneprofiler() 但我一次又一次地失败了。
任何帮助将不胜感激。
数据格式
数据的当前格式称为宽格式,但ggplot
需要长格式数据。 tidyr
包(tidyverse
的一部分)具有在宽格式和长格式之间转换的功能。在这种情况下,您需要函数 tidyr::pivot_longer
。例如,如果您在名为 df_gene_expr
的 data.frame(或小标题)中有数据,则枢轴将类似于
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
是否完全合适 - 它是根据 continuous-continuous 数据设计的。相反,我建议 stat_summary
.
这里有一个小技巧,因为 x-axis 上的离散 cancer_type
。即,cancer_type
变量应该是 factor
,但我们将在 stat_summary
中使用 x-values 的底层代码。否则,它会抱怨使用 geom='line'
没有意义。
大致情况:
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))
) 可以 equally-well 应用于 geom_smooth
,但我认为使用 stat_summary
仍然更有意义,让我们一个明确地选择要计算的统计数据。例如,在这种情况下,median
而不是 mean
可能更适合汇总函数。