The R programming language is an indispensable tool for data visualization, offering a wide array of techniques to create informative plots and charts. One such feature is the ability to plot mathematical equations – a vital resource for visualizing relationships between variables, examining function behavior, or presenting theoretical models.
This article will provide a comprehensive guide on plotting an equation in R, covering the basics and progressing to more complex plotting techniques.
Plotting a Basic Function in R
The process of plotting an equation in R generally begins with the curve()
function. This function plots a line based on a function and a range of input values.
Consider the simple function y = x^2
. To plot this in R:
curve(x^2, from = -10, to = 10, xlab = "x", ylab = "y", main = "Plot of y = x^2")

In this example, the curve()
function takes the following arguments:
x^2
: The function to be plotted.from = -10, to = 10
: The range of x-values over which the function will be plotted.xlab = "x"
: Label for the x-axis.ylab = "y"
: Label for the y-axis.main = "Plot of y = x^2"
: Title of the plot.
This will create a simple 2D plot of the function y = x^2
over the range of -10 to 10.
Plotting Multiple Functions
Often, we need to compare two or more functions on the same plot. R makes this easy by allowing you to add a function to an existing plot using the lines()
function.
Suppose we want to plot y = x^2
and y = x^3
on the same graph.
curve(x^2, from = -10, to = 10, xlab = "x", ylab = "y", col = "blue", main = "Plot of y = x^2 and y = x^3")
curve(x^3, from = -10, to = 10, add = TRUE, col = "red")
legend("topleft", legend = c("y = x^2", "y = x^3"), col = c("blue", "red"), lty = 1)

In the second call to curve()
, we’ve added the argument add = TRUE
which tells R to add the new curve to the existing plot. The col
argument sets the color of each curve, and the legend()
function adds a legend to the plot.
Plotting Non-Linear Equations
R’s curve()
function is quite powerful and can handle a wide variety of mathematical expressions, including non-linear functions.
Consider the non-linear function y = x^2 + sin(x)
. To plot this in R:
curve(x^2 + sin(x), from = -10, to = 10, xlab = "x", ylab = "y", main = "Plot of y = x^2 + sin(x)")

Parametric Plots
Sometimes we want to create a parametric plot, where both x and y coordinates are expressed as functions of an independent parameter.
For instance, to create a plot of a circle using parametric equations (x = cos(t), y = sin(t) for t in [0, 2*pi]), we can use the curve()
function in a slightly unconventional way:
curve(cos, -pi, pi, type = "n", xlab = "x", ylab = "y", main = "Parametric Plot of a Circle", asp = 1)
t <- seq(-pi, pi, length.out = 1000)
lines(cos(t), sin(t))

Here, we first set up a blank plot with curve()
by setting type = "n"
, then use lines()
to add the parametric plot. The asp = 1
argument ensures that the x and y axes are on the same scale, preserving the circular shape.
Advanced Plot Customization
R provides numerous ways to customize your plots further, including changing line styles, setting axis limits, modifying colors, and more. Here’s an example of an advanced custom plot:
curve(x^2, from = -10, to = 10, xlab = "x", ylab = "y", xlim = c(-10, 10), ylim = c(0, 100), col = "blue", lwd = 2, lty = 2, main = "Advanced Custom Plot")
grid(col = "gray", lty = "dotted")
points(0, 0, pch = 19, col = "red")
text(0, 15, "Minimum", pos = 3)

In this example, xlim
and ylim
specify the limits of x and y axes, lwd
changes the line width, lty
changes the line type, grid()
adds a grid to the plot, points()
adds a point, and text()
adds a text label.
Conclusion
Plotting equations in R is a straightforward and flexible process that enables the visualization of mathematical functions and relationships. From basic plots to more complex and customized visualizations, R offers an extensive suite of tools and functions for your plotting needs.