видалити назву легенди в 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 = "")до коду, який створив графік вище.
Денніс

Відповіді:


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

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()замість цього. (Defunct; востаннє використовується у версії 0.9.1) 'Я замінив opts(title = "Boxplot - Candidate's Tweet Scores")на labs(title = "Boxplot - Candidate's Tweet Scores"). Це спрацювало!


0

Оскільки у вас може бути кілька легенд у сюжеті, спосіб вибіркового видалення лише одного з заголовків, не залишаючи порожнього місця, - встановити nameаргумент scale_функції на NULL, тобто

scale_fill_discrete(name = NULL)

(kudos to @pascal для коментаря до іншої теми )

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.