Consider the first two columns of the EuStockMarkets
data frame which contains the closing prices for european stock indices.
dat <- as.data.frame(EuStockMarkets[, 1:2])
If you want to create an area chart for one of the variables you can make use of the polygon
function or the areaplot
function of the package of the same name. Note that using areaplot
the Y-axis will start at 0.
dat <- as.data.frame(EuStockMarkets[, 1:2])
# First column
y <- dat[, 1]
# Area chart
plot(y, type = "l")
polygon(c(1, seq(y), length(y)), c(0, y, 0),
col = rgb(0.53, 0.79, 0.88, alpha = 0.5))
# Almost equivalent to:
# install.packages("areaplot")
library(areaplot)
areaplot(y, col = rgb(0.53, 0.79, 0.88, alpha = 0.5))
If you want to create an area chart with several variables you can make use of the polygon
function as shown below. Note that if one variable is always higher than the other you should plot it first. In addition, if the variables overlap you should use colors with transparency.
dat <- as.data.frame(EuStockMarkets[, 1:2])
# Second variable (because it is higher)
y1 <- dat$SMI
# Plot
plot(y1, type = "l", ylim = c(0, max(dat)))
polygon(c(1, seq(y1), length(y1)), c(0, y1, 0),
col = "#E0F2F1")
# First variable
y2 <- dat$DAX
# Adding the line
lines(y2, type = "l")
polygon(c(1, seq(y2), length(y2)), c(0, y2, 0),
col = "#4DB6AC")
If you want to plot more than two or three variables consider creating a stacked area plot instead.
See also