ggalluvial:第一轴和第二轴的地层顺序相同。

问题描述 投票:1回答:1

我想让冲积图的第二轴与第一轴的顺序保持一致。即由于第一轴是第二轴的上层分类,其主要目的是显示生物的概况和分组,以增强图的可读性。为此,我尝试着手动地对各层进行排序。然而,我所做的只是重新调整节点而不是地层(例如,从这个图开始 教程 或玩弄 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")

Alluvial diagram, first two axes sorted alphabetically

r sankey-diagram
1个回答
1
投票

正如 @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)

© www.soinside.com 2019 - 2024. All rights reserved.