首页 文章

如何在ggplot中更改图例 Headers

提问于
浏览
183

我有如下图 . 它是使用此命令创建的:

library(ggplot2)

df <- data.frame(cond = factor(rep(c("A", "B"), each = 200)), 
                 rating = c(rnorm(200), rnorm(200, mean=.8)))

ggplot(df, aes(x=rating, fill=cond)) + 
geom_density(alpha = .3) +
xlab("NEW RATING TITLE") +
ylab("NEW DENSITY TITLE")

接下来我要做的就是将图例 Headers 从 cond 修改为 NEW LEGEND TITLE .

所以我所做的只是添加以下行添加上面代码的结尾:

+labs(colour="NEW LEGEND TITLE")

但它不起作用 . 什么是正确的方法呢?

enter image description here

8 回答

  • 121

    还有一个非常简单的答案可以用于一些简单的图表 .

    只需在图表中添加对guide_legend()的调用即可 .

    ggplot(...) + ... + guide_legend(title="my awesome title")
    

    如非常好的ggplot docs所示 .

    如果这不起作用,您可以通过调用guides来更精确地设置指南参数:

    ggplot(...) + ... + guides(fill=guide_legend("my awesome title"))
    

    您还可以通过为 guides 调用指定这些参数来改变形状/颜色/大小 .

  • 32

    我在我的ggplot中使用了facet_wrap,除了ArnaudA的解决方案之外,没有任何建议的解决方案适用于我:

    qplot(…) + guides(color=guide_legend(title="sale year"))
    
  • 239

    以上代码都不适合我 .

    这是我发现的,它的工作原理 .

    labs(color = "sale year")

    您还可以通过在末尾添加 \n 来在 Headers 和显示之间添加空格 .

    labs(color = 'sale year\n")

  • 8

    您还可以添加一行(最后一行):

    ggplot(df, aes(x=rating, fill=cond)) + 
      geom_density(alpha = .3) +
      xlab("NEW RATING TITLE") +
      ylab("NEW DENSITY TITLE") +
      labs(fill = "Your Title")
    
  • 1

    我没有深入研究这个,但因为你在ggplot()中使用了 fill=cond

    + labs(color='NEW LEGEND TITLE')
    

    可能没有用 . 但是你用 fill 替换 color ,它有效!

    + labs(fill='NEW LEGEND TITLE')
    

    这在ggplot2_2.1.0中对我有用

    附:我会评论,但我的stackoverflow声誉不足以评论 .

  • 9

    由于你有两个密度,我想你可能想用 scale_fill_manual 设置自己的颜色 .

    如果是这样,你可以做到:

    df <- data.frame(x=1:10,group=c(rep("a",5),rep("b",5)))
    
    legend_title <- "OMG My Title"
    
    ggplot(df, aes(x=x, fill=group)) + geom_density(alpha=.3) +   
        scale_fill_manual(legend_title,values=c("orange","red"))
    

    enter image description here

  • 3

    由于在您的代码中使用 ggplot(data, fill= cond) 来创建直方图,您还需要在标签部分使用"fill"添加图例 Headers ,即 +labs(fill="Title name") . 如果您使用的是不同类型的绘图,其中代码为ggplot(data,color = cond),则可以使用 +labs(colour= "Title Name") . 总之,lab参数必须与aes参数匹配 .

    我已经使用 + guides(fill=guide_legend("my awesome title")) 来更改geom_bar图上的图例 Headers ,但它似乎不适用于geom_point .

  • -1

    这应该工作:

    p <- ggplot(df, aes(x=rating, fill=cond)) + 
               geom_density(alpha=.3) + 
               xlab("NEW RATING TITLE") + 
               ylab("NEW DENSITY TITLE")
    p <- p + guides(fill=guide_legend(title="New Legend Title"))
    

    (或者)

    p + scale_fill_discrete(name = "New Legend Title")
    

相关问题