ggplot2 stat_function行在渐近线之前过早切断

时间:2014-03-04 20:41:50

标签: r ggplot2 line

我正在使用ggplot2中的图表,我使用stat_function来定义一行。我正在使用的数据有限制,我希望该行尽可能多地继续通过限制。以下是我正在研究的一个例子。

fun1<-function(x,y){y=2000000/x}

x<-seq(0,100,1)
y<-seq(0,800000,8000)
df<-data.frame(x,y)

ggplot(df,aes(x=x,y=y))+
    stat_function(fun=fun1)+
    scale_y_continuous(limits=c(0,800000))+
    scale_x_continuous(limits=c(0,80))

左边的线在x = 3附近切断,但我希望它在到达x = 0之前停止。

更新

我找到了解决问题的方法。我创建了一条曲线并使用geom_line将其添加到绘图中。

x<-seq(0,100,1)
y<-seq(0,800000,8000)
df<-data.frame(x,y)

fun1<-function(x,y){y=2000000/x}
mycurve1 <- as.data.frame(curve(from=2.5, to=100, fun1))


ggplot(df,aes(x=x,y=y))+
     geom_point()+
     scale_y_continuous(limits=c(0,800000),expand=c(0,0))+
     scale_x_continuous(limits=c(0,100),expand=c(0,0))+
     geom_line(data=mycurve1,aes(x=x,y=y))

1 个答案:

答案 0 :(得分:0)

由于x仅为整数,x = 2的y值超出了您为y刻度设置的限制。结果,该行在x = 3处被切断。只需改变y尺度的限制就可以了。一个例子:

ggplot(df,aes(x=x,y=y))+
    stat_function(fun=fun1)+
    scale_y_continuous(limits=c(0,4000000))+
    scale_x_continuous(limits=c(0,80))