[R] How to use the function "plot" as Matlab?
r.hankin at noc.soton.ac.uk
Wed Jul 13 10:33:42 CEST 2005
Ted makes a good point... matlab can dynamically rescale a plot in
to plot(...,add=TRUE) statements.
For some reason which I do not understand, the rescaling issue is
only a problem
for me when working in "matlab mode". It's not an issue when working
in "R mode"
Ted pointed out that the following does not behave as intended:
> x = 0.1*(0:20);
and presented an alternative method in which ylim was set by hand. I
x <- 0.1*(0:20)
y1 <- sin(x)
y2 <- 1.5*cos(x)
because this way, the axes are set by the plot() statement, but
nothing is plotted.
On 13 Jul 2005, at 09:12, (Ted Harding) wrote:
> Although this is an over-worked query -- for which an answer, given
> that t="l" has been specified, is to use
> there is a more interesting issue associated with it (given that
> Klebyn has come to it from a Matlab perspective).
> It's a long time since I used real Matlab, but I'll illustrate
> with octave which, in this respect, should be identical to Matlab.
> octave:1> x = 0.1*(0:20);
> octave:2> plot(x,sin(x))
> produces a graph of sin(x) with the y-axis scaled from 0 to 1.0
> octave:3> hold on
> octave:4> plot(x,1.5*cos(x))
> superimposes a graph of 1.5*cos(x) with the y-axis automatically
> re-scaled from -1 to 1.5.
> This would not have happened in R with
> x = 0.1*(0:20);
> where the 0 to 1.0 scaling of the first plot would be kept for
> the second, in which therefore part of the additional graph of
> 1.5*cos(x) would be "outside the box".
> No doubt like many others, I've been caught on the wrong foot
> by this more than a few times. The solution, of course (as
> illustrated in the reply to Klebyn above) is to anticipate
> what scaling you will need for all the graphs you intend to
> put on the same plot, and set up the scalings at the time
> of the first one using the options "xlim" and "ylim", e.g.:
> x = 0.1*(0:20);
> This is not always feasible, and indeed should not be expected
> to be feasible since part of the reason for using software
> like R in the first place is to compute what you do not know!
> Indeed, R will not allow you to use "xlim" or "ylim" once the
> first plot has been drawn.
> So in such cases I end up making a note (either on paper or,
> when I do really serious planning, in auxiliary variables)
> of the min's and max's for each graph, and then re-run the
> plotting commands with appropriate "xlim" and "ylim" scaling
> set up in the first plot so as to include all the subsequent
> graphs in entirety. (Even this strategy can be defeated if
> the succesive graphs represent simulations of long-tailed
> distributions. Unless of course I'm sufficiently alert to
> set the RNG seed first as well ... )
> I'm not sufficiently acquainted with the internals of "plot"
> and friends to anticipate the answer to this question; but,
> anyway, the question is:
> Is it feasible to include, as a parameter to "plot", "lines"
> and "points",
> where this default value would maintain the existing behaviour
> of these functions, while setting
> would allow each succeeding plot, adding graphs using "points"
> or "lines", to be rescaled (as in Matlab/Octave) so as to
> include the entirety of each successive graph?
> Best wishes to all,
> E-Mail: (Ted Harding) <Ted.Harding at nessie.mcc.ac.uk>
> Fax-to-email: +44 (0)870 094 0861
> Date: 13-Jul-05 Time: 09:12:34
> ------------------------------ XFMail ------------------------------
> R-help at stat.math.ethz.ch mailing list
> PLEASE do read the posting guide! http://www.R-project.org/posting-
National Oceanography Centre, Southampton
European Way, Southampton SO14 3ZH, UK
More information about the R-help