2012-05-04 38 views
12

Như một ví dụ, nếu tôi muốn vẽ một âm mưu với điểm 1-5 và thêm điểm 5-9, sau đây sẽ làm việc:Có thể thay đổi ylim và xlim khi cốt truyện đã được vẽ không?

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

Tuy nhiên, nếu tôi không biết số trước những gì để -be-thêm điểm sẽ được (họ có thể là 5-9, cũng có thể là 20-29), tôi không thể thiết lập ylim và xlim trước. Tôi muốn có thể thực hiện một số việc như sau (không hoạt động):

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

Có phải như thế này có thể không?

+2

Có thể không, trừ khi bạn thử một cái gì đó giống như gói 'playwith'. –

+0

Đã sợ như vậy. Bạn có thể đặt nó trong một câu trả lời, vì vậy tôi chấp nhận nó? –

+1

Tôi sẽ chỉ ra rằng các giải pháp ggplot2 đưa ra dưới đây không _technically_ thỏa mãn câu hỏi của OP, theo nghĩa bạn vẫn phải vẽ lại biểu đồ _từ scratch_ để xem các thay đổi. Điều này cũng giống như tình hình trong đồ họa cơ sở, nơi bạn sẽ cần phải xây dựng đồ thị từ đầu để thay đổi giới hạn trục. Vì vậy, câu trả lời của BenBolker @ có lẽ là câu trả lời đúng nhất. – joran

Trả lời

6

(Chỉ để hoàn thành.)

Điều này gần như chắc chắn là không thể trong đồ họa cơ sở R. Các câu trả lời khác chỉ ra rằng nó có thể thực hiện được trong ggplot. Nó có thể có thể có trong một cái gì đó giống như gói playwith, mặc dù một chút chơi xung quanh đã không chỉ cho tôi một cách để làm điều đó.

3

Bạn có thể thay đổi giới hạn trục trong ggplot2. Ví dụ:

require(ggplot2) 
data(mpg) 

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

Như Ben Bolker đề cập, trong đồ họa cơ sở, bạn chắc chắn không thể làm điều đó nếu không có gói bổ sung.

3

với ggplot2 bạn có thể thay đổi trục:

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 

sau đó

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

Điều này có thể đủ tốt? Nó xử lý các giới hạn trên của ylim như là một biến, nhưng về mặt kỹ thuật bạn sẽ biết ylim trước khi thêm điểm:

my.data <- seq(0,5) 
my.points <- seq(5,9) 
plot(my.data, ylim=c(0,max(my.data,my.points))) 
points(my.points) 

Bạn cũng có thể điều trị thấp hơn ràng buộc của cùng một cách 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) 
Các vấn đề liên quan