如何在ggplot中更改图例标题

nev*_*int 254 plot r ggplot2

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

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")
Run Code Online (Sandbox Code Playgroud)

现在,接下来我要做的事情就是修改图例标题COND进入新里程TITLE.

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

+labs(colour="NEW LEGEND TITLE")
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

Aru*_*run 313

这应该工作:

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"))
Run Code Online (Sandbox Code Playgroud)

(或者)

p + scale_fill_discrete(name = "New Legend Title")
Run Code Online (Sandbox Code Playgroud)

  • `p $ labels $ fill`对我不起作用.使用`ggplot2_2.1.0`我使用`p $ labels $ color < - "新传奇标题"` (14认同)
  • 另一种选择是'p $ labels $ fill < - "新传奇标题"` (7认同)
  • guides 和 scale_fill_discrete 有什么区别 (3认同)
  • `p $ labels $ fill`很不错但是如果你在aes中使用多个美学变量(线型,颜色,形状),你必须分别更改它们. (2认同)

Roh*_*ale 187

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

 + labs(color='NEW LEGEND TITLE') 
Run Code Online (Sandbox Code Playgroud)

可能没有用.然而,更换颜色填充,它的作品!

+ labs(fill='NEW LEGEND TITLE') 
Run Code Online (Sandbox Code Playgroud)

这在ggplot2_2.1.0中对我有用

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

  • 我认为这是最严格的答案,它确实是OP最多需要一个额外的行 (18认同)
  • 这是最好的答案. (3认同)
  • 注意:在 ggplot2 3.0+ 中,此解决方案不起作用:通过 `p +guides(fill=guide_legend(title="New Legend Title"))` 解决它 (3认同)
  • color =和fill =都应该起作用。这是对IMO的“正确”回答 (2认同)
  • 填充颜​​色是否起作用取决于实际映射到的“ cond”(或在其他情况下为组)。一个很好的解释可以在http://www.cookbook-r.com/Graphs/Legends_(ggplot2)/中找到 (2认同)

use*_*1_G 40

由于你有两个密度,我想你可能想要设置自己的颜色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"))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


小智 18

以上代码都不适合我.

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

labs(color = "sale year")

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

labs(color = 'sale year\n")

  • 与[此答案](/sf/answers/2725714701/)有什么不同? (2认同)
  • 是的,我尝试了上面的每个示例,这是唯一对我有用的示例。谢谢! (2认同)

小智 15

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

我曾经+ guides(fill=guide_legend("my awesome title"))在geom_bar图上更改了图例标题,但它似乎不适用于geom_point.


小智 7

唉,这些解决方案都不适合我。我正在处理 brms::conditional_effects() 的输出

我的解决方案需要:

+ labs( fill = "New Title", colour = "New Title", labels = "New Title" )
Run Code Online (Sandbox Code Playgroud)


Bir*_*ire 6

我在 ggplot 中使用facet_wrap,除了 ArnaudA 的解决方案之外,所有建议的解决方案都不适合我:

\n\n
qplot(\xe2\x80\xa6) + guides(color=guide_legend(title="sale year")) \n
Run Code Online (Sandbox Code Playgroud)\n


You*_*lal 5

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

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

ggplot(...) + ... + guide_legend(title="my awesome title")
Run Code Online (Sandbox Code Playgroud)

如非常好的ggplot文档所示.

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

ggplot(...) + ... + guides(fill=guide_legend("my awesome title"))
Run Code Online (Sandbox Code Playgroud)

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

  • 这对我不起作用,但是`qplot(...)+指南(color = guide_legend(title ="sale year"))` (25认同)
  • 当有多个图例时不起作用. (5认同)