Изменение меток легенд без изменения маркеров или количества легенд - PullRequest
0 голосов
/ 13 ноября 2018

Я использую ggplot2 для создания фигуры, в которой данные, нанесенные для разных групп, различаются по и по типу линии и цвету.Я пытаюсь изменить ярлыки легенды, однако каждый раз, когда я пытаюсь изменить ярлыки, я могу изменить ярлыки только для одной эстетики (то есть цвета или типа линии), и это порождает две легенды.Есть ли способ изменить метки легенды, когда две эстетики сопоставлены с одной и той же переменной?

Вот мои рабочие данные:

# Generate working data
mydat <- structure(list(message_ineq_high_dum = c(0,0,1,1), 
                                    human_message_dum = c(1,0,1,0), 
                                    fit = c(65,60,76,66), 
                                    lwr = c(62,58,74,63), 
                                    upr = c(68,63,79,69), 
                                    var2 = structure(c(1L,1L, 2L, 2L), 
                                                           .Label = c("Low", "High"),
                                                           class = c("ordered","factor")), 
                                    var1 = structure(c(2L, 1L, 2L, 1L), 
                                                                .Label = c("Low","High"), 
                                                                class = c("ordered", "factor"))), 
                               .Names = c("message_ineq_high_dum","human_message_dum", 
                                          "fit", "lwr", "upr", "var2",
                                          "var1"), 
                               class = "data.frame", 
                               row.names = c(NA, -4L)) 

Давайте попробуем построить данные.Метки легенды "Высокий" и "Низкий" на этом графике.

# Plot: incorrect legend labels
library(ggplot2)

ggplot2::ggplot(data = mydat,
                aes(x = var2,
                    y = fit,
                    group = var1)) +
  theme_minimal() +
  geom_point(aes(color = var1)) +
  geom_line(aes(color = var1, linetype = var1)) +

  geom_errorbar(aes(ymin = lwr,
                    ymax = upr,
                    width = 0.1,
                    color = var1, 
                    linetype = var1)) +
  labs(x = "var2", y = "var1", color = "var3", linetype = "var3") +
  theme(panel.grid.minor = element_blank()) +
  scale_color_manual(values = c("Low" = "black", "High" = "red")) +
  theme(legend.position="bottom", legend.title = element_blank()) 

Я пытаюсь изменить метки легенды с «High» и «Low» на «Foo» и «Bar», не меняя ничего другого.Каждый использованный мной подход меняет метки легенды, а также изменяет (а) количество легенд и / или (б) тип / цвет линии, соответствующий метке легенды.

1 Ответ

0 голосов
/ 13 ноября 2018

Вы используете scale_linetype_manual, но не забудьте установить одинаковые метки!

library(ggplot2)

ggplot2::ggplot(data = mydat,
                aes(x = var2,
                    y = fit,
                    group = var1)) +
  theme_minimal() +
  geom_point(aes(color = var1)) +
  geom_line(aes(color = var1, linetype = var1)) +

  geom_errorbar(aes(ymin = lwr,
                    ymax = upr,
                    width = 0.1,
                    color = var1, 
                    linetype = var1)) +
  labs(x = "var2", y = "var1", color = "var3", linetype = "var3") +
  theme(panel.grid.minor = element_blank()) +
  scale_colour_manual(labels = c("Foo", "Bar"), values = c("black", "red")) +
  scale_linetype_manual( labels = c("Foo", "Bar"),values = c("solid", "dashed") ) +
  theme(legend.position="bottom", legend.title = element_blank())

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...