16

例如,如果我想用点 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)) 

这样的事情可能吗?

4

4 回答 4

7

(只是为了完整性。)

这在 R 基础图形中几乎肯定是不可能的。其他答案指出它在ggplot. 它可能在类似包的东西中是可能的playwith,尽管短暂的玩耍并没有告诉我一种方法来做到这一点。

于 2012-05-04T14:33:27.977 回答
3

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

require(ggplot2)
data(mpg) 

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

正如 Ben Bolker 所提到的,在基本图形中,如果没有额外的软件包,你肯定无法做到这一点。

于 2012-05-04T14:03:49.057 回答
3

你可以修改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))
于 2012-05-04T14:10:24.493 回答
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)
于 2012-05-04T14:19:06.850 回答