Вопрос по r – Можно ли изменить ylim и xlim, когда график уже нарисован?

13

Например, если я хочу нарисовать график с точками 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)) 

Возможно ли что-то подобное?

Вероятно, нет, если вы не попробуете что-то вродеplaywith пакет. Ben Bolker
вот почему я принял его ответ Niek de Klein
Боялся так. Можете ли вы указать это в ответе, чтобы я его принял? Niek de Klein
Я хотел бы отметить, что приведенные ниже решения ggplot2 неtechnically удовлетворить вопрос OP в том смысле, что вам все равно придется повторно визуализировать графикfrom scratch чтобы увидеть изменения. Это то же самое, что и в базовой графике, где вам нужно будет построить график с самого начала, чтобы изменить пределы оси. Так что ответ @ BenBolker, пожалуй, самый правильный. joran

Ваш Ответ

4   ответа
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))
3

ак переменную, но технически вы должны знать 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)
3

require(ggplot2)
data(mpg) 

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

Как упоминает Бен Болкер, в базовой графике вы определенно не сможете сделать это без дополнительных пакетов.

6

(Просто для полноты.

Это почти наверняка невозможно в R базовой графике. Другие ответы указывают, что это возможно вggplot, Этоmight быть возможным в чем-то вродеplaywith пакет, хотя немного поиграть не показал мне способ сделать это.

Похожие вопросы