首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将图例组织到子组中?

如何将图例组织到子组中?
EN

Stack Overflow用户
提问于 2019-05-10 01:29:24
回答 1查看 565关注 0票数 1

我的条形图的图例当前在一个长列表中列出了该图中的所有项目。我希望每个列都有图例组本身。

列数是动态的,因此图例必须能够相应地进行调整。

代码语言:javascript
复制
library("phyloseq"); packageVersion("phyloseq")
library(ggplot2)
library(scales)
data("GlobalPatterns")
TopNOTUs <- names(sort(taxa_sums(GlobalPatterns), TRUE)[1:50])
gp.ch   <- prune_species(TopNOTUs, GlobalPatterns)
gp.ch = subset_taxa(gp.ch, Genus != "NA")
mdf = psmelt(gp.ch)
# Create a ggplot similar to
library("ggplot2")
mdf$group <- paste0(mdf$Phylum, "-", mdf$Genus, sep = "")

colours <-ColourPalleteMulti(mdf, "Phylum", "Genus")

# Plot resultss
ggplot(mdf, aes(Phylum)) + 
  geom_bar(aes(fill = group), colour = "grey", position = "stack")

现在,图例打印以下项目:

放线菌-双歧杆菌

放线杆菌-罗氏菌

拟杆菌-泽泻

类杆菌

..。

我希望它打印出来:

放线菌

-Bifidobacterium

-Rothia

细菌

-Alistipes

-Bacteroides

..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-10 02:26:09

这有点老生常谈,但可能对你有用。首先,使用mtcars dataset将虚拟行添加到表示分组的数据中,然后为每个分组和组件类别分配一个因子级别。最后,我修改了图例中的alpha,这样分组标题就有了透明的颜色并且看起来是隐藏的。

代码语言:javascript
复制
# Fake data sample
library(tidyverse)
cars_sample <- mtcars %>%
  rownames_to_column(var = "name") %>%
  mutate(make = word(name, end = 1),
         model = word(name, start = 2, end = -1)) %>%
  filter(make %in% c("Mazda", "Merc", "Hornet")) %>%
  select(name, make, model, mpg, wt)


# Add rows for groups and make a factor for each group and each component
cars_sample_fct <- cars_sample %>%
  bind_rows( cars_sample %>% count(make) %>% mutate(model = make, name = "")) %>%
  arrange(make, name) %>%
  mutate(name_fct   = fct_inorder(if_else(name == "", make, paste0("- ", model))))

# Plot with transparent grouping legend labels
ggplot(cars_sample_fct, aes(wt, mpg, color = name_fct)) +
  geom_point() +
  scale_color_discrete(name = "Car") +
  guides(color = guide_legend(
    override.aes = list(size = 5, 
                        alpha = cars_sample_fct$name != "")))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56064662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档