Не удается изменить заголовок легенды и метку с помощью ggplot2 в R

#r #ggplot2 #label #legend

#r #ggplot2 #метка #легенда

Вопрос:

Я пытался изменить заголовок легенды с group на греческую букву «sigma» и метку «power.1, power.2, power.3» на «35, 40, 45», но он не появился и по-прежнему показывает имя и метку по умолчанию. Не могли бы вы, пожалуйста, помочь мне с этим? Большое спасибо.

 # Load the library and input the data
library(ggplot2)
library(tidyr)

n <- 2:10
control <- rep(150, 4)
infected <- c(150, 170, 200, 250)
all <- c(control, infected)
sigma <- c(35, 40, 45)

# Compute the population mean
mu <- mean(all)
# Compute the sum of the tau squared
tau2 <- sum((all-mu)^2)
# Compute the gamma
gamma.1 <- (n*tau2)/(sigma[1]^2) 
gamma.2 <- (n*tau2)/(sigma[2]^2) 
gamma.3 <- (n*tau2)/(sigma[3]^2) 
# Compute the power
power.1 <- 1-pf(qf(.95, 7, 16), 7, 16, gamma.1)
power.2 <- 1-pf(qf(.95, 7, 16), 7, 16, gamma.2)
power.3 <- 1-pf(qf(.95, 7, 16), 7, 16, gamma.3)

data <- data.frame(n, power.1, power.2, power.3)

data %>%
  pivot_longer(cols = contains("power"), names_to = "group", values_to = "power") %>%
  ggplot(aes(n, power))  
  geom_line(aes(color = group))  
  geom_point(aes(color = group), size = 4)  
  scale_fill_discrete(name = expression(sigma), labels = c("35","40","45"))
  

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

Ответ №1:

Попробуйте это в заключительной части вашего кода. Один урок, который вы можете усвоить, заключается в том, что заливка и цвет — это разные эстетические свойства. Итак, если вы задаете цвет, который вы должны использовать scale_color_manual . Вот код:

 #Code
data %>%
  pivot_longer(cols = contains("power"), names_to = "group", values_to = "power") %>%
  ggplot(aes(n, power))  
  geom_line(aes(color = group))  
  geom_point(aes(color = group), size = 4)  
  scale_color_discrete(name = expression(sigma), labels = c("35","40","45"))
  

Вывод:

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

Или вы также можете попробовать с guides() , который выдаст тот же результат (но первый вариант более прямой):

 #Code 2
data %>%
  pivot_longer(cols = contains("power"), names_to = "group", values_to = "power") %>%
  ggplot(aes(n, power))  
  geom_line(aes(color = group))  
  geom_point(aes(color = group), size = 4)  
  scale_color_discrete(labels = c("35","40","45")) 
  guides(color=guide_legend(title=expression(sigma)))
  

Комментарии:

1. Спасибо за вашу помощь и второй код. Действительно ценю это.

Ответ №2:

Вы должны использовать:

 scale_colour_discrete(name = expression(sigma), labels = c("35","40","45"))