library("ggplot2")
eq = function(x){x^-1}
ggplot(data.frame(x=c(-6,6)), aes(x = x, y=eq(x)))+
geom_line(data=as.data.frame(curve(from=-6, to=-.01, eq)))+
geom_line(data=as.data.frame(curve(from=.01, to=6, eq)))
我正在尝试制作一个单独的情节,这段代码给了我想要的情节,但是有两个额外的情节,一个有每个geom_line。我不明白为什么要创建另外两个地块。
答案 0 :(得分:3)
除了上面的评论之外,您不需要两次单独调用geom_line
来生成此图。如果您按照以下方式重新定义功能,则可以使用stat_function
。
eq <- function(x) ifelse(x==0, NA,x^-1)
然后你可以按如下方式绘制
df <- data.frame(x=seq(-6,6,.01))
ggplot(df) + stat_function(aes(x), fun = eq)
答案 1 :(得分:2)
正如@shayaa在评论中指出的那样,curve
本身会产生情节,这就是为什么你会得到额外的情节。为了避免这种情况,您可以在绘制之前创建一个数据框,并将其在geom_line
:
library("ggplot2")
eq = function(x){x^-1}
df <- data.frame(x =seq(-6, 6, 0.01), y = eq(seq(-6, 6, 0.01)))
ggplot(df) +
geom_line(data=subset(df, x<=-.01), aes(x = x, y = y)) +
geom_line(data=subset(df, x>=.01), aes(x = x, y = y))