绘图已完成后,是否可以更改 ylim 和 xlim?

17

比如说,如果我想绘制一个带有点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。我希望能够像下面这样做(这种方式不起作用):

plot(c(1,2,3,4,5))
points(c(5,6,7,8,9), ylim=c(0,10)) 

这种情况是否可能?


1
我想指出下面给出的ggplot2解决方案在技术上并不完全满足OP的问题,因为您仍然需要从头开始重新渲染图形才能看到更改。这与基本图形中的情况相同,在那里您需要从头开始构建图形以更改轴限制。因此,@BenBolker的答案可能是最正确的。 - joran
1
这就是为什么我接受了他的答案。 - Niek de Klein
4个回答

6
(仅为完整性而提供。)
在R基本图形中,这几乎是不可能的。其他答案指出,在ggplot中是可行的。在类似于playwith包的东西中可能是可能的,尽管玩了一小段时间,我还没有找到一种方法来做到这一点。

3

您可以在ggplot2中更改坐标轴限制。例如,

require(ggplot2)
data(mpg) 

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

正如Ben Bolker所提到的,在基本绘图中,你肯定无法在没有额外包的情况下完成它。

3

这个是否足够好呢?将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)

您可以同样对ylim的下界进行处理:
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)

2
使用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

那么

a<-g+coord_cartesian(xlim=c(0,100))
a+geom_point(data=df,aes(x=extra,y=veg))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接