[R] Change the limits of a plot "a posteriori"

Duncan Murdoch murdoch.duncan at gmail.com
Thu Dec 1 20:34:46 CET 2011


On 01/12/2011 1:12 PM, jcano wrote:
> Hi all
>
> How can I change the limits (xlim or ylim) in a plot that has been already
> created?

You can't, if you're using classic R graphics.  They use an "ink on 
paper" model of graphics. If you want to change what you've drawn, you 
get a new piece of paper.

Your two solutions below are the usual methods to work around this 
limitation.   The first is the easiest method in general, though it's 
not particularly easy if you're using curve().   Generally if you're 
planning to plot y1 vs x1 and y2 vs x2, you can set your ylim to 
range(c(y1, y2)) and your xlim to range(c(x1, x2)) and things are fine.  
If you want to follow this strategy with curve(), you need to call it 
twice for each curve:  once to find the range of points it would plot 
(they are in the return value of the function), and a second time to 
redo the plot with the calculated xlim and ylim.

Duncan Murdoch

> For example, consider this naive example
> curve(dbeta(x,2,4))
> curve(dbeta(x,8,13),add=T,col=2)
>
> When adding the second curve, it goes off the original limits computed by R
> for the first graph, which are roughly, c(0,2.1)
>
> I know two obvious solutions for this, which are:
> 1) passing a sufficiently large parameter e.g. ylim=c(0,4) to the first
> graphic
> curve(dbeta(x,2,4),ylim=c(0,4))
> curve(dbeta(x,8,13),add=T,col=2)
>
> or
>
> 2) switch the order in which I plot the curves
> curve(dbeta(x,8,13),col=2)
> curve(dbeta(x,2,4),add=T)
>
> but I guess if there is any way of adjusting the limits of the graphic "a
> posteriori", once you have a plot with the undesired limits, forcing R to
> redraw it with the new limits, but without having to execute again the
> "curve" commands
>
> Hope I made myself clear
>
> Best regards and thank you very much in advance
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Change-the-limits-of-a-plot-a-posteriori-tp4129750p4129750.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list