Próbowałem zmienić kluczowe etykiety na ggplot, ale nie udało mi się nieudać. Gdy wskazuję etykiety w scale_color_manual Linia Legenda wydawana jest powielona. Gdzie jest mój błąd?

Rozważ de Przykład:

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"))

Ale jeśli zastąpię klucz legendy "A" i "B" z "grupą a" i "grupą b"

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

Dostaję powielane legendy, a kolorowe kule stają się błędne.

niewłaściwa działka

Co się dzieje?

Dzięki!

1
Antonio 15 marzec 2020, 00:36

2 odpowiedzi

Najlepsza odpowiedź

Możesz to zrobić bez zmiany poziomów współczynnika, pod warunkiem, że dodasz te same etykiety zarówno do skali kolorów, jak i kształtnych:

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

3
Allan Cameron 14 marzec 2020, 21:54

Problem jest spowodowany zmianą etykiet kolorów, ale nie etykiety kształtu. Możesz więc zastosować etykiety na kształt i kolor, albo zmienić etykiety czynnika type przed spiskowaniem.

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

3
27 ϕ 9 14 marzec 2020, 21:48