Как мне изменить заголовок легенды в этом ggplot

#r #ggplot2 #legend

#r #ggplot2 #легенда

Вопрос:

Я попробовал несколько способов изменить заголовок легенды, но в итоге создается новая легенда с этим заголовком чуть ниже текущей легенды.

Вот код:

 C1 <- rnorm(200,14,4)
C2 <- rnorm(20,13,2)
C1.date <- sample(seq(as.Date('1999/01/01'), as.Date('2000/01/01'), by="day"), 200)
C2.date <- sample(seq(as.Date('1999/01/01'), as.Date('2000/01/01'), by="day"), 20)

dataset <- data.frame(c(C1,C2),c(C1.date,C2.date),c(rep("C1",200),rep("C2",20)))

names(dataset) <- c("A","B","C")
library(ggplot2)
ggplot(data = dataset, aes(x = B, y = A)) 
 enter code here`xlab("B") 
 ylab("A") 
 geom_point(aes(color = factor(C))) 
 scale_x_date(date_labels = "%b %Y") 
 stat_smooth(aes(color = factor(C),fill = factor(C)),method="loess")
  

Ответ №1:

Используя labs , вы можете изменить как заголовок, так fill и color легенду. Если вы измените только один, они больше не будут объединены.

 C1 <- rnorm(200,14,4)
C2 <- rnorm(20,13,2)
C1.date <- sample(seq(as.Date('1999/01/01'), as.Date('2000/01/01'), by="day"), 200)
C2.date <- sample(seq(as.Date('1999/01/01'), as.Date('2000/01/01'), by="day"), 20)

dataset <- data.frame(c(C1,C2),c(C1.date,C2.date),c(rep("C1",200),rep("C2",20)))

names(dataset) <- c("A","B","C")
library(ggplot2)
ggplot(data = dataset, aes(x = B, y = A)) 
  xlab("B") 
  ylab("A") 
  geom_point(aes(color = factor(C))) 
  scale_x_date(date_labels = "%b %Y") 
  stat_smooth(aes(color = factor(C),fill = factor(C)),method="loess")  
  labs(color = "Legend", fill = "Legend")
#> `geom_smooth()` using formula 'y ~ x'
  

Ответ №2:

Другим вариантом может быть использование guides() , аналогичное быстрому решению @stefan:

 library(ggplot2)
#Code
ggplot(data = dataset, aes(x = B, y = A)) 
  xlab("B") 
  ylab("A") 
  geom_point(aes(color = factor(C))) 
  scale_x_date(date_labels = "%b %Y") 
  stat_smooth(aes(color = factor(C),fill = factor(C)),method="loess") 
  guides(color=guide_legend(title='MY NEW TITLE'),
         fill=guide_legend(title='MY NEW TITLE'))
  

Вывод:

введите описание изображения здесь