Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 绘制绘图后,是否可以更改ylim和xlim?_R_Plot_Limit - Fatal编程技术网

R 绘制绘图后,是否可以更改ylim和xlim?

R 绘制绘图后,是否可以更改ylim和xlim?,r,plot,limit,R,Plot,Limit,例如,如果我想用点1-5绘制一个图,并添加点5-9,则以下操作可行: plot(c(1,2,3,4,5), ylim=c(0,10)) points(c(5,6,7,8,9)) 但是,如果我事先不知道要添加的点数是多少(它们可能是5-9,也可能是20-29),我就无法预先设置ylim和xlim。我希望能够做到以下几点(不起作用): 可以这样做吗?您可以更改ggplot2中的轴限制。比如说, require(ggplot2) data(mpg) g = ggplot(mpg, aes(cyl

例如,如果我想用点1-5绘制一个图,并添加点5-9,则以下操作可行:

plot(c(1,2,3,4,5), ylim=c(0,10))
points(c(5,6,7,8,9))
但是,如果我事先不知道要添加的点数是多少(它们可能是5-9,也可能是20-29),我就无法预先设置ylim和xlim。我希望能够做到以下几点(不起作用):


可以这样做吗?

您可以更改ggplot2中的轴限制。比如说,

require(ggplot2)
data(mpg) 

g = ggplot(mpg, aes(cyl, cty)) + geom_point() + xlim(5, 8)
g
g + xlim(4,8)

正如Ben Bolker提到的,在基本图形中,如果没有额外的软件包,您肯定无法完成此操作。

使用
ggplot2
可以修改轴:

df <-data.frame(age=c(10,10,20,20,25,25,25),veg=c(0,1,0,1,1,0,1),extra=c(10,10,20,20,25,25,90))
 g=ggplot(data=df,aes(x=age,y=veg))
 g=g+stat_summary(fun.y=mean,geom="point")
 g

df这足够好吗?它将ylim的上限视为一个变量,但从技术上讲,在添加点之前,您应该知道ylim:

my.data <- seq(0,5)
my.points <- seq(5,9)
plot(my.data, ylim=c(0,max(my.data,my.points)))
points(my.points)
my.data(仅为完整起见。)


这在R基图形中几乎肯定是不可能的。其他答案指出,这在
ggplot
中是可行的。在
playwith
软件包中可能会出现这种情况,尽管我只是简单地玩了一会儿,还没有找到解决方法。

我想指出,下面给出的ggplot2解决方案在技术上不能满足OP的问题,因为您仍然需要从头开始重新渲染图形以查看更改。这与基本图形中的情况相同,在基本图形中,需要从头构建图形以更改轴限制。所以@BenBolker的答案可能是最正确的。这就是为什么我接受了他的答案
a<-g+coord_cartesian(xlim=c(0,100))
a+geom_point(data=df,aes(x=extra,y=veg))
my.data <- seq(0,5)
my.points <- seq(5,9)
plot(my.data, ylim=c(0,max(my.data,my.points)))
points(my.points)
my.data <- seq(0,5)
my.points <- seq(5,9)
plot(my.data, ylim=c(min(my.data,my.points),max(my.data,my.points)))
points(my.points)