R Tutorial R Charts & Graphs R Statistics R References

R - Bar Plot



A bar plot (or bar chart) is a graph that presents categorical data with rectangular bars with heights or lengths proportional to the values that they represent. The bars can be plotted vertically or horizontally.

The R barplot() function computes and draws the bar plot of the given data values.

Syntax

barplot(height, names.arg, main,
        xlab, ylab, xlim, ylim, 
        col, border, horiz, beside)

Parameters

height Required. Specify either a vector or matrix of values describing the bars which make up the plot.
names.arg Optional. Specify a vector of names to be plotted below each bar or group of bars.
main, xlab, ylab Optional. Used to specify main title, x axis label and y axis label respectively.
xlim, ylim Optional. Used to specify range of values on x-axis and y-axis respectively.
col Optional. Specify a color to be used to fill the bars.
border Optional. Specify the color of the border around the bars.
horiz Optional. If FALSE, the bars are drawn vertically with the first bar to the left. If TRUE, the bars are drawn horizontally with the first at the bottom.
beside Optional. If FALSE, the columns of height are portrayed as stacked bars, and if TRUE the columns are portrayed as juxtaposed bars.

Example:

In the example below, a bar plot is generated using data present in vector students, which represents number of students studying different languages.

#creating dataset
students <- c(50, 40, 70, 30, 60, 50)

#naming the file
png(file = "barplot.png")

#drawing the barplot
barplot(students)

#saving the file
dev.off()

The output of the above code will be:

Bar Plot

Example: Add features to bar plot

More features in the plot can be added using more parameters in the function, for example: to add title to the plot, main parameter is used and to add color, col parameter is used.

#creating dataset
students <- c(50, 40, 70, 30, 60, 50)
langs <- c("Java", "C#", "Python", "PHP", "C++", "R")

#naming the file
png(file = "barplot.png")

#drawing the barplot
barplot(students, names.arg=langs, main="Bar Plot", 
        col="blue", border="red", xlab="Languages",
        ylab="Number of students")

#saving the file
dev.off()

The output of the above code will be:

Bar Plot

Example: Horizontal bar plot

To plot the horizontal bar plot, horiz parameter should be set to TRUE. Consider the example below:

#creating dataset
students <- c(50, 40, 70, 30, 60, 50)
langs <- c("Java", "C#", "Python", "PHP", "C++", "R")

#naming the file
png(file = "barplot.png")

#drawing the barplot
barplot(students, names.arg=langs, main="Bar Plot", 
        col="blue", border="red", ylab="Languages",
        xlab="Number of students", horiz=TRUE)

#saving the file
dev.off()

The output of the above code will be:

Bar Plot

Example: Grouped bar plot

To plot the grouped bar plot (multiple bar plot), beside parameter should be set to TRUE. Consider the example below:

#creating dataset - number of students 
#studying languages for last four years
st_java <- c(50, 55, 60, 70)
st_python <- c(60, 65, 70, 80)
st_r <- c(50, 65, 60, 65)
students <- rbind(st_java, st_python, st_r)

years <- c('2016', '2017', '2018', '2019')
colors <- c('blue', 'green', 'red')
langs <- c('Java', 'Python', 'R')

#naming the file
png(file = "barplot.png")

#drawing the barplot
barplot(students, names.arg=years, main="Bar Plot", 
        xlab="Years", ylab="Number of students", 
        col=colors, beside=TRUE)

#adding legend to the barplot
legend("topleft", langs, cex = 1, fill = colors)

#saving the file
dev.off()

The output of the above code will be:

Bar Plot

Example: Stacked bar plot

To plot the stacked bar plo, beside parameter should be set to FALSE. Consider the example below:

#creating dataset - number of students 
#studying languages for last four years
st_java <- c(50, 55, 60, 70, 75)
st_python <- c(60, 65, 70, 80, 90)
st_r <- c(50, 65, 60, 65, 75)
students <- rbind(st_java, st_python, st_r)

years <- c('2016', '2017', '2018', '2019', '2020')
colors <- c('blue', 'green', 'red')
langs <- c('Java', 'Python', 'R')

#naming the file
png(file = "barplot.png")

#drawing the barplot
barplot(students, names.arg=years, main="Bar Plot", 
        xlab="Years", ylab="Number of students", 
        col=colors, beside=FALSE)

#adding legend to the barplot
legend("topleft", langs, cex = 1, fill = colors)

#saving the file
dev.off()

The output of the above code will be:

Bar Plot