【问题标题】:Custom ggplot legend and automatic colors自定义 ggplot 图例和自动颜色
【发布时间】:2017-04-11 13:55:02
【问题描述】:

我有一个看起来像这样的情节:

library(ggplot2)
ggplot(data = dat, aes(x = value,
                             y = ..density..,
                             fill = exp_ID,
                             color = exp_ID)) +      
geom_density(alpha = 0.3,
             bw = 0.5) +
scale_x_log10(limits = c(0.0001,30000)) +
theme_classic(base_size = 15) +
theme(axis.text = element_text(color = "black")) +

scale_fill_discrete(name="Experimental\nCondition",
                    breaks=c("A", "B", "C", "D"),
                    labels=c("label1", "label2", "label3", "label4"))

添加自定义图例只会给我两个图例。我似乎无法删除自动的,例如theme(legend.position="none"),因为这显然会删除两者,无论它放在代码中的什么位置。

如何删除第一个图例?

这里的数据:https://drive.google.com/open?id=0B8piwdBM2UI5Sk03SU1XVUloQ0E

【问题讨论】:

  • ggplot2 draws two legends的可能重复
  • 在您的链接中,OP 有多个具有不同标题的 scale_geoms,导致每个 geom 生成一个新的图例而不是折叠它们。我只有一个自定义图例,我希望它会覆盖自动生成的图例。
  • 对该问题的检查答案很好地解释了事情。只有当图例具有相同的标题和标签时,它们才会折叠在一起。您更改了 fill 而不是 color 的标题和标签,因此得到了两个图例而不是一个折叠图例。如果您只需要 fill 图例而不是折叠图例,则可以在 scale_color_discrete 中使用 guide = "none"

标签: r ggplot2


【解决方案1】:

您需要做的是删除由 aes 规范自动创建的特定主题。为此,请添加以下行:

scale_fill(guide = 'none')

到您的代码。在其他时候,您可能需要为添加到情节中的其他美学这样做。在这种情况下,只需使用适当的scale_command

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2019-03-08
    相关资源
    最近更新 更多