Построение нескольких функций и добавление к ним легенд в ggplot2

Я хочу построить график y=log(1+x) и y=x в диапазоне [-0,25, 0,25]. Вот мой код до сих пор -

library(ggplot2)
log1plusx <- function(x) log(1+x)
self <- function(x) x
ggplot(data.frame(x=c(-0.25, 0.25)), aes(x=x)) + stat_function(fun=log1plusx, color="red") + stat_function(fun=self, color="blue")

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

Есть идеи?


person Soumendra    schedule 28.05.2013    source источник


Ответы (2)


Частичный ответ:

ggplot(data.frame(x=c(-0.25, 0.25)), aes(x=x)) + 
    geom_path(aes(colour="red"), stat="function", fun=log1plusx)+
    geom_path(aes(colour="blue"), stat="function", fun=self) +
    scale_colour_identity("Function", guide="legend", 
                          labels = c("log1plusx", "self"), 
                          breaks = c("red", "blue"))

Хотя, на мой взгляд, вам лучше создать data.frame перед построением графика.

person baptiste    schedule 28.05.2013
comment
Ваше решение мне нравится больше. Почему лучше построить data.frame перед построением графика? - person Soumendra; 28.05.2013
comment
Я попробовал это для нескольких функций, и метки для цветов просто неверны. Как я могу настроить порядок там? Есть ли в ggplot порядок цветов? - person reox; 21.08.2015
comment
я думаю, что-то изменилось с тех пор, я добавил аргумент breaks, чтобы исправить порядок - person baptiste; 21.08.2015

Вот как я это решил. Другие идеи приветствуются.

log1plusx <- function(x) log(1+x)
self <- function(x) x
plot.range1 <- data.frame(x=c(-0.25, 0.25), Functions = factor(1))
plot.range2 <- data.frame(x=c(-0.25, 0.25), Functions = factor(2))

ggplot(NULL, aes(x=x, colour=Functions)) +
  stat_function(data = plot.range1, fun = log1plusx) +
  stat_function(data = plot.range2, fun = self) +
  scale_colour_manual(values = c("red", "green"), labels = c("log(1+x)", "x")) +
  theme(axis.title.y=element_blank())
person Soumendra    schedule 28.05.2013