删除ggplot中的图例标题


111

我正在尝试在中删除图例的标题ggplot2

df <- data.frame(
  g = rep(letters[1:2], 5),
  x = rnorm(10),
  y = rnorm(10)
)

library(ggplot2)
ggplot(df, aes(x, y, colour=g)) +
  geom_line(stat="identity") + 
  theme(legend.position="bottom")

在此处输入图片说明

我已经看到了这个问题,那里的所有解决方案似乎都不适合我。大多数人会给出关于如何opts弃用和使用的错误theme。我也尝试了各种版本theme(legend.title=NULL)theme(legend.title="")theme(legend.title=element_blank)等典型的错误信息是:

'opts' is deprecated. Use 'theme' instead. (Deprecated; last used in version 0.9.1)
'theme_blank' is deprecated. Use 'element_blank' instead. (Deprecated; last used in version 0.9.1)

ggplot2自版本0.9.3发行以来,我是第一次使用该工具,我发现很难浏览某些更改...


5
您可以labs()为此使用:将行添加labs(colour = "")到生成上述图形的代码中。
丹尼斯

Answers:


191

您快到了:只需添加 theme(legend.title=element_blank())

ggplot(df, aes(x, y, colour=g)) +
  geom_line(stat="identity") + 
  theme(legend.position="bottom") +
  theme(legend.title=element_blank())

Cookbook for R上的此页面提供了许多有关如何自定义图例的详细信息。


2
这将删除所有图例标题。对于更多本地控制,该guide = guide_legend()命令有效。删除填充图例标题,但保留颜色图例标题,例如scale_fill_brewer(palette = "Dark2", guide = guide_legend(title = NULL)) + scale_color_manual(values = c("blue", "white", "red"))
PatrickT

9

这也有效,并演示了如何更改图例标题:

ggplot(df, aes(x, y, colour=g)) +
  geom_line(stat="identity") + 
  theme(legend.position="bottom") +
  scale_color_discrete(name="")

7
这将标题替换为空字符串,因此会在标签和图例框之间引起多余的空间,只有在图例的框或背景颜色与放置位置不同时,该空间才可见。因此,在诸如theme_bw()图例周围有一个框并位于绘图区域某处的简单情况下,对于快速而现成的方法(但不是最好的方法)来说,这是最好的(我通常的方法)。
PatrickT 2014年

1
+1进行观察。我在使用两个不同的图例以及上述解决方案创建的两个图例之间存在空白的问题。设定scale_color_manual(name=element_blank())+较低的传说对我来说解决了它
joaoal

@joaoal, element_blank()似乎是推荐的方法。设置name = NULL 是另一种方式。
PatrickT

1

另一种使用labs颜色并将颜色设置为的选项NULL

ggplot(df, aes(x, y, colour = g)) +
  geom_line(stat = "identity") +
  theme(legend.position = "bottom") +
  labs(colour = NULL)

在此处输入图片说明


0

对于Error: 'opts' is deprecated。使用theme()代替。(已取消;最后一次在0.9.1版中使用)'我替换opts(title = "Boxplot - Candidate's Tweet Scores")labs(title = "Boxplot - Candidate's Tweet Scores")。有效!


0

由于图中可能有多个图例,因此有选择地删除其中一个标题而又不留空白的方法是namescale_函数的参数设置为NULL,即

scale_fill_discrete(name = NULL)

(对@pascal表示感谢,以评论另一个线程

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.