我想让冲积图的第二轴与第一轴的顺序保持一致。即由于第一轴是第二轴的上层分类,其主要目的是显示生物的概况和分组,以增强图的可读性。为此,我尝试着手动地对各层进行排序。然而,我所做的只是重新调整节点而不是地层(例如,从这个图开始 教程 或玩弄 lode.guidance
).
有人知道如何解决这个问题吗?最后,第一轴和第二轴之间的所有节点都应该水平流动,然后从第二轴排序到第三轴,因为它是。
简短版的数据(还是挺多的,抱歉)。
taxa <- structure(list(Order = structure(c(6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L,
6L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L,
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L,
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L,
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L,
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L,
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L,
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L,
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L,
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L,
9L, 9L, 19L, 19L, 19L, 19L, 19L, 19L,
19L, 19L, 19L, 19L, 19L, 19L, 19L,
19L, 27L, 27L, 27L, 27L, 27L, 27L,
27L, 27L, 27L, 27L, 27L, 27L, 27L,
32L, 32L, 32L, 32L, 32L, 32L, 32L,
32L, 32L, 32L, 32L, 32L, 32L),
.Label = c("Adinetida", "Cercomonadidae_or",
"Cercozoa_unclassified",
"Chaetopeltidales",
"Chlorophyta_ph_unclassified",
"Chromulinales",
"Chrysophyceae_unclassified",
"Chytridiomycetes_unclassified",
"Conthreep", "Craspedida_or",
"Cryomonadida", "Cryptomonadales",
"Cystobasidiales",
"Cystobasidiomycetes_unclassified",
"Cystofilobasidiales",
"Dinophyceae_unclassified",
"Diplogasterida",
"Glissomonadida_or",
"Helotiales", "Imbricatea_unclassified",
"Incertae_Sedis",
"Intramacronucleata_unclassified",
"Leotiomycetes_unclassified", "LG08-10_or",
"Litostomatea", "Monhysterida",
"Ochromonadales",
"Ochrophyta_ph_unclassified",
"Parachela",
"Peronosporomycetes_or",
"Phragmoplastophyta_unclassified",
"Saccharomycetales",
"Spirotrichea", "Spongomonadida",
"Thecofilosea_unclassified",
"Tremellales", "Tremellomycetes_or",
"Tremellomycetes_unclassified",
"Trichosporonales"),
class = "factor"),
Genus = c(paste(rep("Poterioochromonas", 19)),
paste(rep("Colpoda", 9)),
paste(rep("Colpodea_unclassified", 24)),
paste(rep("Colpodida_ge", 28)),
paste(rep("Conthreep_unclassified", 4)),
"Cryptocaryon", "Cyclidium",
paste(rep("Nassophorea_unclassified", 2)),
"Platyophrya", paste(rep("Tetrahymena", 5)),
paste(rep("uncultured", 3)),
paste(rep("uncultured_ge", 4)), "Glarea",
paste(rep("Helotiales_unclassified_ge", 13)),
paste(rep("Chrysolepidomonas", 12)), "Ochromonas",
paste(rep("Debaryomycetaceae_unclassified", 3)),
"Pichiaceae_unclassified_ge",
paste(rep("Saccharomycetaceae_unclassified", 5)),
paste(rep("Yarrowia", 4))),
Freq = rep(1, 141),
Habitat = c("B", "B", "B", "B", "B", "B", "B","B", "B", "B", "B",
"B", "B", "B", "B", "B", "B", "B", "B", "A", "A", "A",
"B", "A", "A", "B", "B", "B", "B", "A", "A", "A", "A",
"B", "A", "A", "A", "A", "B", "A", "B", "B", "A", "B",
"B", "B", "A", "A", "A", "B", "B", "B", "A", "A", "A",
"A", "A", "A", "A", "A", "B", "A", "B", "A", "B", "B",
"A", "A", "B", "B", "A", "B", "A", "B", "B", "A", "A",
"B", "B", "B", "B", "B", "B", "B", "B", "B", "A", "A",
"B", "A", "A", "B", "B", "B", "A", "B", "B", "A", "B",
"B", "B", "A", "A", "A", "A", "A", "A", "A", "A", "B",
"A", "B", "A", "B", "A", "A", "A", "B", "B", "B", "B",
"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B",
"A", "A", "B", "A", "B", "A", "B", "B", "B")),
class = "data.frame", row.names = seq(1:141))
这是按字母顺序排列的三轴冲积图。
library("ggalluvial")
ggplot(data = taxa,
aes(axis1 = Order, axis2 = Genus, axis3 = Habitat, y = Freq)) +
stat_alluvium(aes(fill = Habitat)) +
geom_stratum(linetype = 1, lwd = 0.01) +
geom_text(stat = "stratum", infer.label = TRUE, size = 3) +
theme_void() +
theme(legend.position = "none")
正如 @s_t 所建议的,这应该可以通过使 taxa$Genus
因子变量而不是字符变量。但是 as.factor()
将因子级别按字母顺序排列,这不是你想要的。通过指定级别的出现顺序,你可以在 taxa
下面的代码重新排列了第二个轴的地层,而其他轴保持原样。这样的图是你想要的吗?(从你的问题中复制的代码被省略了。)
# ensure that 'Genus' is a factor with levels in order of appearance
taxa$Genus <- factor(taxa$Genus, levels = as.character(unique(taxa$Genus)))
# plot
ggplot(data = taxa,
aes(axis1 = Order, axis2 = Genus, axis3 = Habitat, y = Freq)) +
stat_alluvium(aes(fill = Habitat)) +
geom_stratum(linetype = 1, lwd = 0.01) +
geom_text(stat = "stratum", infer.label = TRUE, size = 3) +
theme_void() +
theme(legend.position = "none")
创建于 2020-05-16 由 重读包 (v0.3.0)