One of the most common types of data visualization is the bar chart. In this article, we will discuss how to create a bar chart in R using base R functions and the ggplot2 package.
What is a Bar Chart?
A bar chart, or bar graph, is a chart that represents categorical data with rectangular bars proportional to the values that they represent. The bars can be plotted either vertically or horizontally. Bar charts are widely used in data analysis and research for comparing individual data points with each other. They can be utilized to compare values across different categories, track changes over time, or visualize the parts-of-a-whole relationship in data.
Creating a Simple Bar Chart in R
In base R, you can create a bar chart using the barplot()
function. Suppose we have the following data representing the number of items sold in a store for five different items:
# Define the data
items <- c("Item 1", "Item 2", "Item 3", "Item 4", "Item 5")
sales <- c(23, 17, 35, 29, 41)
# Create a bar chart
barplot(sales, names.arg = items)

The barplot()
function takes a vector or matrix of values that describe the bars. The names.arg
parameter is used to specify the names of the items on the x-axis.
Adjusting the Colors of the Bars
You can change the colors of the bars in the bar chart using the col
parameter:
barplot(sales, names.arg = items, col = "lightblue")

Adding a Title and Labels
You can add a title, as well as labels for the x and y axes, using the main
, xlab
, and ylab
parameters:
barplot(sales,
names.arg = items,
col = "lightblue",
main = "Sales of Different Items",
xlab = "Items",
ylab = "Number of Items Sold")

Creating a Grouped Bar Chart
When working with more complex data, you might need to create grouped or stacked bar charts. A grouped bar chart can be created by passing a matrix to the barplot()
function:
# Define the data
sales <- matrix(c(23, 17, 35, 29, 41, 27, 22, 30, 33, 38),
nrow = 5,
ncol = 2,
byrow = TRUE)
rownames(sales) <- c("Item 1", "Item 2", "Item 3", "Item 4", "Item 5")
colnames(sales) <- c("Store 1", "Store 2")
# Create a grouped bar chart
barplot(sales,
beside = TRUE,
col = c("lightblue", "lightgreen"),
main = "Sales in Different Stores",
xlab = "Items",
ylab = "Number of Items Sold")

The beside = TRUE
parameter is used to place the bars for “Store 1” and “Store 2” beside each other.
Creating a Stacked Bar Chart
If you want to create a stacked bar chart instead of a grouped bar chart, you can remove the beside = TRUE
parameter:
barplot(sales,
col = c("lightblue", "lightgreen"),
main = "Sales in Different Stores",
xlab = "Items",
ylab = "Number of Items Sold")

Creating Bar Charts with ggplot2
Let’s use a built-in dataset in R, mtcars
, for our example. We’ll create a bar chart showing the number of cars with different numbers of gears.
# Load ggplot2
library(ggplot2)
# Convert gears to factor
mtcars$gear <- as.factor(mtcars$gear)
# Create a bar chart
ggplot(mtcars, aes(x = gear)) +
geom_bar(fill = "lightblue",
color = "black") +
labs(title = "Number of Cars with Different Gears",
x = "Number of Gears",
y = "Number of Cars")

The geom_bar()
function is used to create bar charts in ggplot2. By default, it creates a histogram and automatically calculates the count of cases in each group.
Conclusion
Creating bar charts is a fundamental skill in data visualization. In this article, you learned how to create bar charts in R using both the base R barplot()
function and the geom_bar()
function from the ggplot2 package. There are many more customization options that you can explore to make your bar charts more informative and aesthetically pleasing.