2013-05-28 54 views
3

我想在[-0.25,0.25]範圍內繪製y = log(1 + x)和y = x。這是我的代碼到目前爲止 -在ggplot2中繪製多個函數併爲它們添加圖例

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,但目前沒有任何工作。

任何想法?

回答

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

我更喜歡你的解決方案。爲什麼在繪圖之前構建數據框更好? – Soumendra

+0

我嘗試過多種功能,而顏色的標籤只是錯誤的。我如何調整那裏的訂購? ggplot是否有任何顏色順序? – reox

+0

我想從那時起改變了一些東西,我添加了休息參數來修改訂單 – baptiste

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()) 
相關問題