изменить ключевые метки в легенде в ggplot2 - PullRequest
1 голос
/ 15 марта 2020

Я пытался изменить метки клавиш на ggplot, но безуспешно. Когда я указываю метки в строке scale_color_manual, легенда дублируется. Где моя ошибка?

Рассмотрим пример:

mydata <- data.frame(
year=as.integer(rep(2010:2020,each=2)),
type=rep(c("a","b"),11),
value=c(617,186,546,241,430,217,349,188,286,141,446,166,442,167,424,210,421,182,405,190,432,194))

ggplot(mydata,aes(year,value,group=type))+
    theme_bw()+
    theme(
        axis.text=element_text(size=16),
        axis.title=element_text(size=18),
        legend.position=c(.75,.885),
        legend.key = element_rect(color = "white", fill = NA),
        legend.key.size = unit(1, "cm"),
        legend.title=element_blank(),
        legend.text=element_text(size=20)
    )+
    labs(x="year",y="number")+
    geom_point(aes(color=type,shape=type),size=3)+
    scale_x_continuous(breaks = seq(min(mydata$year),max(mydata$year), by = 2))+
    scale_shape_manual(values=c(15,19))+
    scale_color_manual(values=c("red","blue"))

Но если я заменим ключ легенды "a" и "b" на "group a" и "group b" на

scale_color_manual(values=c("red","blue"),labels=c("group a","group b"))

Я получаю дублированные легенды, и цветные маркеры становятся неправильными.

неправильный сюжет

Что происходит не так?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 15 марта 2020

Проблема вызвана изменением цветовых меток, но не меток формы. Поэтому вам нужно либо применить метки как к форме, так и к цвету, либо изменить метки type перед построением графика.

library(ggplot2)
library(dplyr)

mydata %>%
  mutate(type = factor(type, labels = c("group a","group b"))) %>%
  ggplot(aes(year,value))+
  theme_bw()+
  theme(
    axis.text=element_text(size=16),
    axis.title=element_text(size=18),
    legend.position=c(.75,.885),
    legend.key = element_rect(color = "white", fill = NA),
    legend.key.size = unit(1, "cm"),
    legend.title=element_blank(),
    legend.text=element_text(size=20)
  )+
  labs(x="year",y="number")+
  geom_point(aes(color=type,shape=type),size=3)+
  scale_x_continuous(breaks = seq(min(mydata$year),max(mydata$year), by = 2))+
  scale_shape_manual(values=c(15,19))+
  scale_color_manual(values=c("red","blue"))

enter image description here

2 голосов
/ 15 марта 2020

Вы можете сделать это без изменения уровней факторов, при условии, что вы добавите одинаковые метки к шкалам цвета и формы:

ggplot(mydata,aes(year,value,group=type))+
    theme_bw()+
    theme(
        axis.text=element_text(size=16),
        axis.title=element_text(size=18),
        legend.position=c(.75,.885),
        legend.key = element_rect(color = "white", fill = NA),
        legend.key.size = unit(1, "cm"),
        legend.title=element_blank(),
        legend.text=element_text(size=20)
    )+
    labs(x="year",y="number")+
    geom_point(aes(color=type,shape=type),size=3)+
    scale_x_continuous(breaks = seq(min(mydata$year),max(mydata$year), by = 2))+
    scale_shape_manual(values=c(15,19), labels = c("group a", "group b")) +
    scale_color_manual(values=c("red","blue"), labels = c("group a", "group b"))

enter image description here

...