Как получить легенду для этих кодов в ggplot 2, R

#r #ggplot2

#r #ggplot2

Вопрос:

Я хочу получить легенду для этих кодов, используя ggplot2, но мне трудно это сделать

Вот мои коды

 qote<- function(x,a) { 
    z<- (x^3 a)-10
    return(z)}
m1 <- c(0.5, -.5)
n2 <- c("blue","red")[seq_along(m1)]
gg<- ggplot(data = data.frame(x = c(-2, 2)), aes(x)) 
    theme(legend.position = c(-1,-0.9))
for (i in seq_along(m1)){  
    gg <- gg  stat_function(fun = qote, color=n2[i], args=list(a=m1[i]))   
}
gg 

Я хочу получить легенду для этих двух кривых внутри графика (вверху слева).:
синяя кривая = Время 1; Красная кривая = время 2. Я хочу сохранить коды, простой код с использованием ggplot2 был бы очень хорош, если это вообще возможно. Пожалуйста, также учтите, что я могу увеличить кривые до 7.

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

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

Ответ №1:

Вы можете сделать это, установив aes(color) , а затем добавив scale_color_manual :

 ggplot(tibble(x = c(-2, 2)), aes(x))  
  map(1:length(m1), 
      ~stat_function(fun = qote, aes(color = paste0("Time ", .)), args=list(a=m1[.])))  
  scale_color_manual("curve legend", values = n2)
 

* Хорошо использовать цикл for тоже, я просто обнаружил, что с ним легче писать map .

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

 qote<- function(x,a) { 
  z<- (x^3 a)-10
  return(z)}
m1 <- c(0.5, -.5)
n2 <- c("blue","red")

gg <- ggplot(data.frame(x = c(-2, 2)), aes(x)) 

for (i in seq_along(m1)) {
  gg <- gg   
    stat_function(fun = qote, aes_(color = paste0("Time ", i)), args=list(a = m1[i]))
} 

gg   scale_color_manual("curve legend", values = n2)
 

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

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

1. Спасибо, как мы могли бы увеличить количество кривых?

2. Это решение будет произвольно масштабироваться с количеством элементов, определенных в m1 (и, по ассоциации, x и n2 ).

3. Извините, у меня это вообще не работает, могу ли я сохранить свои коды

4. Можете ли вы быть более конкретным? Вы хотите сказать, что если вы запустите этот код, он не отобразит показанный график? Что значит «сохранить мои коды»? Рад вносить обновления, просто дайте мне знать, что не работает.

5. Если вы видите мой вопрос, я сказал: «Я хочу сохранить коды, простой код с использованием ggplot2 был бы очень хорош, если это вообще возможно. Пожалуйста, также подумайте, что я могу увеличить кривые до 7. »