graphics (version 3.3.0)

plot: Generic X-Y Plotting


Generic function for plotting of R objects. For more details about the graphical parameter arguments, see par.

For simple scatter plots, plot.default will be used. However, there are plot methods for many R objects, including functions, data.frames, density objects, etc. Use methods(plot) and the documentation for these.


plot(x, y, ...)


the coordinates of points in the plot. Alternatively, a single plotting structure, function or any R object with a plot method can be provided.
the y coordinates of points in the plot, optional if x is an appropriate structure.
Arguments to be passed to methods, such as graphical parameters (see par). Many methods will accept the following arguments:
what type of plot should be drawn. Possible types are
  • "p" for points,
  • "l" for lines,
  • "b" for both,
  • "c" for the lines part alone of "b",
  • "o" for both ‘overplotted’,
  • "h" for ‘histogram’ like (or ‘high-density’) vertical lines,
  • "s" for stair steps,
  • "S" for other steps, see ‘Details’ below,
  • "n" for no plotting.

All other types give a warning or an error; using, e.g., type = "punkte" being equivalent to type = "p" for S compatibility. Note that some methods, e.g.\ifelse{latex}{\out{~}}{ } plot.factor, do not accept this.

an overall title for the plot: see title.

a sub title for the plot: see title.

a title for the x axis: see title.

a title for the y axis: see title.

the $y/x$ aspect ratio, see plot.window.


The two step types differ in their x-y preference: Going from $(x1,y1)$ to $(x2,y2)$ with $x1 < x2$, type = "s" moves first horizontal, then vertical, whereas type = "S" moves the other way around.

See Also

plot.default, plot.formula and other methods; points, lines, par. For thousands of points, consider using smoothScatter() instead of plot().

For X-Y-Z plotting see contour, persp and image.


Run this code
require(stats) # for lowess, rpois, rnorm

plot(sin, -pi, 2*pi) # see ?plot.function

## Discrete Distribution Plot:
plot(table(rpois(100, 5)), type = "h", col = "red", lwd = 10,
     main = "rpois(100, lambda = 5)")

## Simple quantiles/ECDF, see ecdf() {library(stats)} for a better one:
plot(x <- sort(rnorm(47)), type = "s", main = "plot(x, type = \"s\")")
points(x, cex = .5, col = "dark red")

Run the code above in your browser using DataLab