显示 R 中图例的选择级别
Posted
技术标签:
【中文标题】显示 R 中图例的选择级别【英文标题】:Showing select levels for a legend in R 【发布时间】:2020-02-05 07:11:56 【问题描述】:我有一个长格式的数据框,其中包含按不同年龄组的鸟类分组的不同门的相对丰度。我有 44 个不同的门,我想绘制不同年龄组相对丰度的堆积条形图,但只想显示前 5/10 丰富分类群的图例。
我已经浏览过Remove legend entries for some factors levels 和How do I display only selected items in a ggplot2 legend?。第二个链接准确地描述了我想要做什么,但是在scale_fill_manual()
中使用break=
参数的解决方案对我不起作用,因为它给出了以下错误:
Error: Insufficient values in manual scale. 44 needed but only 0 provided.
我使用的ggplot代码如下:
ggplot(df2, aes(x = variable, y = value, fill = taxa )) +
geom_bar(stat = "identity") +
xlab("\nAge and Nest") +
ylab("Relative Abund\n") +
scale_x_discrete(limits=c('Nest','3', '6', '9', '12')) +
scale_fill_manual(breaks=c("k__Bacteria;p__Proteobacteria", "k__Bacteria;p__Firmicutes", "k__Bacteria;p__Actinobacteria", "k__Bacteria;p__Bacteroidetes" ,
"k__Bacteria;p__Tenericutes", "k__Bacteria;p__Acidobacteria", "k__Bacteria;p__Cyanobacteria", "k__Bacteria;p__Verrucomicrobia",
"k__Bacteria;p__Planctomycetes", "k__Bacteria;p__Chlamydia"))+
theme_bw()
类似于实际数据的玩具数据格式如下所示:
taxa variable value
k__Bacteria;p__Firmicutes 6 0.36
k__Bacteria;p__Acidobacteria 6 0.0025
k__Bacteria;p__Cyanobacteria 6 0.01
k__Bacteria;p__Planctomycetes 6 0.004
... ... ...
k__Bacteria;p__Acidobacteria 9 0.1025
k__Bacteria;p__Firmicutes 9 0.086
k__Bacteria;p__Planctomycetes 9 0.054
k__Bacteria;p__Cyanobacteria 9 0.017
编辑: 可重现的示例数据如下:
df <- data.frame("taxa" = c("A", "B", "C", "D" , "D", "C", "A", "B", "A", "C", "D", "B") , "variable" = c(rep(3,4), rep(6,4), rep(9,4)), "values" = c(0.02, 0.08, 0.75,0.15, 0.08, 0.75, 0.15,0.02, 0.02, 0.02, 0.06, 0.90))
【问题讨论】:
【参考方案1】:使用values
参数提供所有值,然后使用breaks
显示选定的值。您没有提供可重现的数据,所以我将使用一个可重现的示例,您应该能够将其应用于您的数据:
ggplot(mtcars, aes(x = mpg, y = wt, colour = as.factor(cyl))) +
geom_col() +
scale_colour_manual(values = unique(mtcars$cyl), breaks = c("4","6"))
cyl
的可能值为 4,6 或 8;对于breaks
,我们只是在图例中显示了 4 和 6。
您的values
参数可能类似于values = unique(df$taxa)
。
【讨论】:
感谢您的回复。我找到了它不起作用的原因。这是因为“分类单元”列不是我的数据框中的一个因素。欣赏它。 所以我改变了你的解决方案,以便堆叠的条形图填充不同的颜色,并且由于某种原因颜色方案完全改变了它之前的颜色,对此有什么见解吗?除了fill=as.factor(taxa)
,我使用的代码和你的一样以上是关于显示 R 中图例的选择级别的主要内容,如果未能解决你的问题,请参考以下文章
当数据中不存在分组变量的所有级别时,绘图之间的颜色比例和图例一致