How to Plot an Equation in R

Spread the love

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.


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.

Posted in RTagged

Leave a Reply