# plot

0th

Percentile

##### 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.

Keywords
hplot
plot(x, y, ...)
##### Arguments
x
the coordinates of points in the plot. Alternatively, a single plotting structure, function or any R object with a plot method can be provided.
y
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:
type
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.

main
an overall title for the plot: see title.

sub
a sub title for the plot: see title.

xlab
a title for the x axis: see title.

ylab
a title for the y axis: see title.

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

##### Details

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.

plot.default, plot.formula and other methods; points, lines, par.

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

• plot
##### Examples
library(graphics) require(stats) # for lowess, rpois, rnorm plot(cars) lines(lowess(cars)) 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")
Documentation reproduced from package graphics, version 3.2.0, License: Part of R 3.2.0

### Community examples

Luis Alberto at Sep 4, 2019 graphics v3.6.1

plot(basedata1$iq, basedata$read_ab, main="Diagrama de DispersiĆ³n", xlab = "read_ab", ylab = "iq")

richie@datacamp.com at Jan 17, 2017 graphics v3.3.2

Pass a numeric vector to the x and y arguments, and you get a scatter plot. The main argument provides a [title()](https://www.rdocumentation.org/packages/graphics/topics/title). {r} plot(1:100, (1:100) ^ 2, main = "plot(1:100, (1:100) ^ 2)")  If you only pass a single argument, it is interpreted as the y argument, and the x argument is the sequence from 1 to the length of y. {r} plot((1:100) ^ 2, main = "plot((1:100) ^ 2)")  cex ("character expansion") controls the size of points. lwd controls the line width. pch controls the shape of points - you get 25 symbols to choose from, as well as alphabetic characters. col controls the color of the points. When pch is 21:25, the points also get a background color which is set using bg. [points()](https://www.rdocumentation.org/packages/graphics/topics/points) for more on how to change the appearance of points in a scatter plot. {r} plot( 1:25, cex = 3, lwd = 3, pch = 1:25, col = rainbow(25), bg = c(rep(NA, 20), terrain.colors(5)), main = "plot(1:25, pch = 1:25, ...)" )  If you specify type = "l", you get a line plot instead. See [plot.default()](https://www.rdocumentation.org/packages/graphics/topics/plot.default) for a demonstration of all the possible values for type. {r} plot( (1:100) ^ 2, type = "l", main = 'plot((1:100) ^ 2, type = "l")' )  lty controls the line type. col and lwd work in the same way as with points. [lines()](https://www.rdocumentation.org/packages/graphics/topics/lines) for more on how to change the appearance of lines in a line plot. {r} plot( (1:100) ^ 2, type = "l", lty = "dashed", lwd = 3, col = "chocolate", main = 'plot((1:100) ^ 2, type = "l", lty = "dashed", ...)' )  It is best practise to keep your x and y variables together, rather than as separate variables. {r} with( cars, plot(speed, dist, main = "with(cars, plot(speed, dist))") )  The formula interface, similar to modeling functions like [lm()](https://www.rdocumentation.org/packages/stats/topics/lm), makes this convenient. See [plot.formula()](https://www.rdocumentation.org/packages/graphics/topics/plot.formula) for more information. {r} plot( dist ~ speed, data = cars, main = "plot(dist ~ speed, data = cars)" )  If you pass a two column data frame or matrix then the columns are treated as the x and y values. So in this case, you can simply do: {r} plot(cars, main = "plot(cars)")  The [lines()](https://www.rdocumentation.org/packages/graphics/topics/lines), [points()](https://www.rdocumentation.org/packages/graphics/topics/points) and [title()](https://www.rdocumentation.org/packages/graphics/topics/title) functions add lines, points and titles respectively to an existing plot. {r} plot(cars) lines(lowess(cars)) title("plot(cars); lines(lowess(cars))")  If the x variable is categorical, plot() knows to draw a box plot instead of a scatter plot. See [boxplot()](https://www.rdocumentation.org/packages/graphics/topics/boxplot) for more information on drawing those. {r} with( sleep, plot(group, extra, main = "with(sleep, plot(group, extra))") )  Again, the formula interface can be useful here. {r} plot(extra ~ group, sleep, main = "plot(extra ~ group, sleep)")  Axis limits can be set using xlim and ylim. {r} plot( (1:100) ^ 2, xlim = c(-100, 200), ylim = c(2500, 7500), main = "plot((1:100) ^ 2, xlim = c(-100, 200), ylim = c(2500, 7500))" )  You can set log-scale axes using the log argument. {r} plot( exp(1:10), 2 ^ (1:10), main = "plot(exp(1:10), 2 ^ (1:10))" ) plot( exp(1:10), 2 ^ (1:10), log = "x", main = 'plot(exp(1:10), 2 ^ (1:10), log = "x")' ) plot( exp(1:10), 2 ^ (1:10), log = "y", main = 'plot(exp(1:10), 2 ^ (1:10), log = "y")' ) plot( exp(1:10), 2 ^ (1:10), log = "xy", main = 'plot(exp(1:10), 2 ^ (1:10), log = "xy")' )  If you pass a table of counts for a vector, plot() draws a simple histogram-like plot. See [hist()](https://www.rdocumentation.org/packages/graphics/topics/hist) for a more comprehensive histogram function. {r} plot( table(rpois(100, 5)), main = "plot(table(rpois(100, 5)))" )  For multi-dimensional tables, you get a mosaic plot. See [mosaicplot()](https://www.rdocumentation.org/packages/graphics/topics/mosaicplot) for more information. {r} plot( table(X = rpois(100, 5), Y = rbinom(100, 10, 0.75)), main = "plot(table(X = rpois(100, 5), Y = rbinom(100, 10, 0.75)))" )  You can also pass functions to plot. See [curve()](https://www.rdocumentation.org/packages/graphics/topics/curve) for more examples. {r} plot( sin, from = -pi, to = 2 * pi, main = "plot(sin, from = -pi, to = 2 * pi)" )  Use the axis function to give fine control over how the axes are created. See [axis()](https://www.rdocumentation.org/packages/graphics/topics/axis) and [Axis()](https://www.rdocumentation.org/packages/graphics/topics/Axis) for more info. {r} plot( sin, from = -pi, to = 2 * pi, axes = FALSE, main = "plot(sin, axes = FALSE, ...); axis(1, ...); axis(2)" ) axis( 1, # bottom axis pi * (-1:2), c(expression(-pi), 0, expression(pi), expression(2 * pi)) ) axis(2) # left axis  Further graphical parameters can be set using [par()](https://www.rdocumentation.org/packages/graphics/topics/par). See [with_par()](https://www.rdocumentation.org/packages/withr/topics/with_par) for the best way to use par(). {r} old_pars <- par(las = 1) # horizontal axis labels plot((1:100) ^ 2, main = "par(las = 1); plot((1:100) ^ 2)") par(old_pars) # reset parameters