2012-05-04 11 views
12

Per fare un esempio, se voglio disegnare una trama con punti 1-5 e aggiungere punti 5-9, il seguente avrebbe funzionato:È possibile modificare ylim e xlim quando la trama è già stata disegnata?

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

Tuttavia, se non so in anticipo quali numeri le a -sono aggiunti i punti (potrebbero essere 5-9, potrebbero anche essere 20-29), non posso impostare anticipatamente ylim e xlim. Mi piacerebbe essere in grado di fare qualcosa di simile al seguente (che non funziona):

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

è qualcosa di simile possibile?

+2

Probabilmente no, a meno che non si provi qualcosa come il pacchetto 'playwith'. –

+0

Aveva paura così. Puoi metterlo in una risposta, quindi lo accetto? –

+1

Vorrei sottolineare che le soluzioni ggplot2 fornite di seguito non soddisfano _tecnico- mente la domanda dell'OP, nel senso che è necessario ripetere il rendering del grafo _da scratch_ per vedere le modifiche. È lo stesso della situazione nella grafica di base, in cui è necessario creare il grafico dall'inizio per modificare i limiti dell'asse. Quindi la risposta di @ BenBolker è probabilmente la più corretta. – joran

risposta

6

(Solo per completezza.)

Questo è quasi certamente impossibile nella grafica di base R. Altre risposte indicano che è fattibile in ggplot. Si può essere possibile in qualcosa come il pacchetto playwith, anche se un po 'di giocare non mi ha mostrato un modo per farlo.

3

È possibile modificare i limiti degli assi in ggplot2. Ad esempio,

require(ggplot2) 
data(mpg) 

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

Come cita Ben Bolker, nella grafica di base, è sicuramente non può farlo senza pacchetti aggiuntivi.

3

con ggplot2 è possibile modificare l'asse:

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 

poi

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

questo sarebbe abbastanza buono? Tratta il limite superiore di ylim come una variabile, ma tecnicamente si saprebbe ylim prima di aggiungere i punti:

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

Si potrebbe anche trattare il limite inferiore del ylim allo stesso modo:

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) 
Problemi correlati