我想在范围[-0.25,0.25]中绘制y = log(1 + x)和y = x。这是我到目前为止的代码 -
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,但到目前为止没有任何作用。
有什么想法吗?
答案 0 :(得分:3)
部分答案:
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。
答案 1 :(得分:1)
以下是我如何解决它。欢迎其他想法。
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())