ggplot geom_boxplot 用于基因表达数据
ggplot geom_boxplot for gene expression data
我正在尝试获取 4 个不同基因的箱线图,以及多个患者中每个基因的表达数据。
我尝试了多种方法,但总是遇到错误。我可以使用基本的 boxplot() 函数来做到这一点,但无法在 ggplot 中弄清楚,而且我看不到任何帮助 - 昨天花了几个小时阅读其他答案和问题!大多数其他数据似乎都是 2 列,因此可以指定 x = 列 a 和 y = 列 b。但是,我想绘制整个 df 的所有 4 列,但我找不到任何帮助。我可以在 ggplot 中一次做一个,但不能同时做 4 个。
我拥有的数据 BCON_sig_genes 是 4 个基因,对于 152 个样本,每个基因的值都在 3-6 之间。 df 是 4 个变量的 152 obs,其中 4 列以每个基因名称为标题,所有单元格都是值,如下所示。
CD3E LAT ZAP70 LCK
1002 4.214679 5.652482 4.788204 5.393783
1022 4.424925 5.776641 4.864269 5.593587
8035 4.327270 5.725364 4.509920 4.961659
8037 4.415715 5.494048 4.435241 5.081846
9004 4.290078 5.265329 4.799106 5.275424
9005 4.233490 5.338098 4.666506 5.069394
下面的代码每次获取一个基因,通过替换基因的名称。
BCON_sig_genes %>% ggplot(aes(y = CD3E, x = "CD3E"))+ geom_boxplot()
ggplot boxplot 1 gene only
我试过 gene <- colnames(BCON_sig_genes)
然后输入 x = gene 但它不起作用并出现以下错误消息:
错误:美学必须为长度1或与数据相同(152):x
我想我需要弄清楚 y 是什么。我试着留空,这样它会获取所有数据并对每一列进行排序,但没有成功。
我尝试使用 gather() 函数并制作键和值,但我无法在不出错的情况下完全弄明白......但这感觉就像我在正确的轨道上!
使用基本函数,我只需要这样做boxplot(BCON_sig_genes)
,它只是用正确的值在图表上绘制所有 4 个基因。 base function boxplot all genes
我想我需要为 ggplot 更好地处理数据,这样我就可以告诉它 y 只是每一列的所有表达式值,但我不确定如何处理。
任何帮助将不胜感激!!
谢谢,Vicky
要使 ggplot 正常工作,您需要以长格式获取数据。这基本上意味着您在第 1 列中获得基因名称,在第 2 列中获得它们的表达。您对 gather 的想法是正确的,但 gather 被替换为 pivot_longer。
library(tidyverse)
data %>%
pivot_longer(cols = CD3E:LCK,
names_to = "gene",
values_to = "expression") %>%
ggplot(aes(x = gene,
y = expression)) +
geom_boxplot()
我正在尝试获取 4 个不同基因的箱线图,以及多个患者中每个基因的表达数据。
我尝试了多种方法,但总是遇到错误。我可以使用基本的 boxplot() 函数来做到这一点,但无法在 ggplot 中弄清楚,而且我看不到任何帮助 - 昨天花了几个小时阅读其他答案和问题!大多数其他数据似乎都是 2 列,因此可以指定 x = 列 a 和 y = 列 b。但是,我想绘制整个 df 的所有 4 列,但我找不到任何帮助。我可以在 ggplot 中一次做一个,但不能同时做 4 个。
我拥有的数据 BCON_sig_genes 是 4 个基因,对于 152 个样本,每个基因的值都在 3-6 之间。 df 是 4 个变量的 152 obs,其中 4 列以每个基因名称为标题,所有单元格都是值,如下所示。
CD3E LAT ZAP70 LCK
1002 4.214679 5.652482 4.788204 5.393783
1022 4.424925 5.776641 4.864269 5.593587
8035 4.327270 5.725364 4.509920 4.961659
8037 4.415715 5.494048 4.435241 5.081846
9004 4.290078 5.265329 4.799106 5.275424
9005 4.233490 5.338098 4.666506 5.069394
下面的代码每次获取一个基因,通过替换基因的名称。
BCON_sig_genes %>% ggplot(aes(y = CD3E, x = "CD3E"))+ geom_boxplot()
ggplot boxplot 1 gene only
我试过 gene <- colnames(BCON_sig_genes)
然后输入 x = gene 但它不起作用并出现以下错误消息:
错误:美学必须为长度1或与数据相同(152):x
我想我需要弄清楚 y 是什么。我试着留空,这样它会获取所有数据并对每一列进行排序,但没有成功。
我尝试使用 gather() 函数并制作键和值,但我无法在不出错的情况下完全弄明白......但这感觉就像我在正确的轨道上!
使用基本函数,我只需要这样做boxplot(BCON_sig_genes)
,它只是用正确的值在图表上绘制所有 4 个基因。 base function boxplot all genes
我想我需要为 ggplot 更好地处理数据,这样我就可以告诉它 y 只是每一列的所有表达式值,但我不确定如何处理。
任何帮助将不胜感激!!
谢谢,Vicky
要使 ggplot 正常工作,您需要以长格式获取数据。这基本上意味着您在第 1 列中获得基因名称,在第 2 列中获得它们的表达。您对 gather 的想法是正确的,但 gather 被替换为 pivot_longer。
library(tidyverse)
data %>%
pivot_longer(cols = CD3E:LCK,
names_to = "gene",
values_to = "expression") %>%
ggplot(aes(x = gene,
y = expression)) +
geom_boxplot()