我正在使用名为" phyloseq"分析生物信息学数据。
otumat = matrix(sample(1:100, 100, replace = TRUE), nrow = 10, ncol = 10)
otumat
rownames(otumat) <- paste0("OTU", 1:nrow(otumat))
colnames(otumat) <- paste0("Sample", 1:ncol(otumat))
otumat
taxmat = matrix(sample(letters, 70, replace = TRUE), nrow = nrow(otumat), ncol = 7)
rownames(taxmat) <- rownames(otumat)
colnames(taxmat) <- c("Domain", "Phylum", "Class", "Order", "Family", "Genus",
"Species")
taxmat
library("phyloseq")
OTU = otu_table(otumat, taxa_are_rows = TRUE)
TAX = tax_table(taxmat)
OTU
TAX
physeq = phyloseq(OTU, TAX)
physeq
plot_bar(physeq, fill = "Family")
因此生成的条形图不会将同一个族堆叠在一起。例如,有两个单独的&#34; I&#34;样本10中的块。我知道使用ggplot2的phyloseq图表。有没有人知道我可以添加到lot_bar(physeq,fill =&#34; Family&#34;)的ggplot2相关代码,以便在条形图中将同一个家族堆叠在一起?
答案 0 :(得分:0)
您需要重新排序用于x轴的因子的级别。 physeq
大概有一个名为&#34; Sample&#34; (没有安装相关的软件包),您需要对此级别进行重新排序。
应该可以使用像这样的命令
physeq$Sample <- factor(physeq$Sample, levels = paste0("Sample", 1:10))
然后它应该正确绘制。
您可能需要挖掘才能找到要更改的相关部分
答案 1 :(得分:0)
实际上,尊重,plot_bar
功能已经做了你要求的事情:
# preliminaries
rm(list = ls())
library("phyloseq"); packageVersion("phyloseq")
data("GlobalPatterns")
gp.ch = subset_taxa(GlobalPatterns, Phylum == "Chlamydiae")
# the function call that does what you're asking for
plot_bar(gp.ch, fill = "Family")
有关详细信息,请参阅以下帮助教程:
https://joey711.github.io/phyloseq/plot_bar-examples.html
您也可以指定x轴分组。