【问题标题】:Plotting multiple functions and adding legends for them in ggplot2在 ggplot2 中绘制多个函数并为它们添加图例
【发布时间】:2013-05-28 16:25:20
【问题描述】:

我想在 [-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,但到目前为止没有任何效果。

有什么想法吗?

【问题讨论】:

    标签: r plot ggplot2 legend


    【解决方案1】:

    部分答案:

    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 会更好。

    【讨论】:

    • 我更喜欢您的解决方案。为什么在绘图之前构建 data.frame 更好?
    • 我尝试了多种功能,但颜色标签是错误的。我如何调整那里的顺序? ggplot 有颜色顺序吗?
    • 我想从那以后发生了一些变化,我添加了breaks参数来修复订单
    【解决方案2】:

    这是我解决它的方法。欢迎其他想法。

    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())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-28
      • 1970-01-01
      • 1970-01-01
      • 2013-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多