我正在使用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))
答案 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))