使用对stat_function

时间:2016-08-13 03:01:19

标签: r ggplot2

在此recent SO question中,有人询问如何使用ggplot2绘制反函数。是的,我知道您可以使用单独调用geom_line来简单地绘制它,与该问题的答案类似。

除了在stat_function中使用ggplot2统计信息外,我想制作一个看起来像该情节的ggplot(基础R版本如下所示)。这可能吗?我不想破解潜在的功能。

eq = function(x){x^-1}
xseq <- seq(-1,1,.01)
plot(xseq, eq(xseq), type = "l", xlab = "x", ylab =" x inverse")

enter image description here

当我使用以下ggplot代码绘制它时,我得到一个不合需要的连续geom_path图。

library(ggplot2)
df <- data.frame(x=xseq)
ggplot(df) + stat_function(aes(x), fun = eq)

enter image description here

我尝试过的事情

  1. 消除了如下绘制+/- inf的难度

    df <- data.frame(x= c(seq(-1,-.01,.01), seq(.01,1, .01)))
    ggplot(df) + stat_function(aes(x), fun=eq)
    
  2. 在混合中添加NA

    df <- data.frame(x= c(seq(-1,-.01,.01), NA, seq(.01,1, .01)))
    ggplot(df) + stat_function(aes(x), fun=eq)
    

    2B。是的,我知道ggplot会删除NA,但不是吗?任何人都知道为什么不呢?

  3. 添加分组变量以对它们进行不连续分组

    library(dplyr)
    df <- df %>% mutate(group = ifelse(x <0 , 1, 2))
    ggplot(df) + stat_function(aes(x, group = group), fun = eq, geom = "line")
    

    3B。是的,我知道,我试图在最后一次通话中更改geom

  4. 什么有效

    eq <- function(x) ifelse(x==0, NA,x^-1)
    ggplot(df) + stat_function(aes(x), fun = eq)
    

    这提供了所需的结果,但它重新定义了我不想做的功能。

0 个答案:

没有答案