在此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")
当我使用以下ggplot代码绘制它时,我得到一个不合需要的连续geom_path
图。
library(ggplot2)
df <- data.frame(x=xseq)
ggplot(df) + stat_function(aes(x), fun = eq)
消除了如下绘制+/- inf
的难度
df <- data.frame(x= c(seq(-1,-.01,.01), seq(.01,1, .01)))
ggplot(df) + stat_function(aes(x), fun=eq)
在混合中添加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
,但不是吗?任何人都知道为什么不呢?
添加分组变量以对它们进行不连续分组
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
。
eq <- function(x) ifelse(x==0, NA,x^-1)
ggplot(df) + stat_function(aes(x), fun = eq)
这提供了所需的结果,但它重新定义了我不想做的功能。