# Plotting Bar Charts in Python (Tutorial)

This is a detailed tutorial on Plotting Bar Charts in Python. Learn to draw different kinds of bar graphs with a lot of options using the `matplotlib` module.

## Plotting Bar Charts in Python

In our last tutorial, we learned to create single line and multi-line graphs using the `matplotlib` module in Python. If you have not checked that tutorial yet, I highly recommend you to go through it first before beginning further with this one.

If you do not have the `matplotlib` module installed yet, you can quickly install it using the following command.

`pip install matplotlib`

To draw a bar chart with this module, all you need to do is to import this module in your Python program and then have to use its `pyplot.bar()` method. You just have to provide some arguments to this method and you’re all set to see a bar chart drawn as per your provided inputs.

### A Simple Bar Chart

Have a look at the following code and the bar chart shown in the output.

```import matplotlib.pyplot as p

#X-Values
x = [1, 2, 3, 4, 5, 6]

#Y-Values or Heights of Bars
y = [5, 10, 7, 15, 13, 25]

#Bar Labels
labels = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]

#Bar Colors
colors = ["red", "green", "blue"]

#Plotting the Bar Chart
p.bar(x, y, tick_label = labels, width = 0.5, color = colors)

#X-AXIS Label
p.xlabel("Days")

#Y-AXIS Label
p.ylabel("Sales")

#Bar Chart Title
p.title("Weekly Sales Graph")

#Displaying the graph
p.show()```

Output. Let’s quickly talk about the method `bar()` and its arguments according to which the graph is constructed. We have passed 5 different arguments to this method that are described below.

• x. This is a Python List containing the X-Values of the Bar Chart.
• y. This is also a Python List that contains the Y-Values or you can say the heights of the Bars.
• tick_label. This is again a Python List containing the labels for each of the consecutive bars.
• width. It is a numerical argument that defines the width of the bars.
• color. You can pass any number of colors in a Python List here.

The `xlabel()` and `ylabel()` methods are used to give label to the X-AXIS and Y-AXIS respectively. The method `title()` gives a title for the Bar Chart and at the end, we’ve used the show() method to finally display the constructed Bar Chart.

### Complex Bar Chart

Although bar charts are commonly used to visualize simple data as also shown in the above example, but you can show much more complex data visualizations with it.

Let’s take the data set of the popularity of three programming languages over the past 5 years. We have the following data set and we want to make bar chart for it. (I got the following data from Google Trends)

 Language / Year 2015 2016 2017 2018 2019 Python 25 29 41 48 59 Java 99 73 67 59 54 JavaScript 44 43 49 45 45

Note. The numbers are just to have a comparison of each of these languages popularity over the time period of 5 years. Therefore, there is no specific unit associated with them.

Code.

```import matplotlib.pyplot as p

X1 = [1, 2, 3, 4, 5]
X2 = [1.25, 2.25, 3.25, 4.25, 5.25]
X3 = [1.5, 2.5, 3.5, 4.5, 5.5]

Y1 = [25, 29, 41, 48, 59]
Y2 = [99, 73, 67, 59, 54]
Y3 = [44, 43, 49, 45, 45]

labels = ["2015", "2016", "2017", "2018", "2019"]

p.bar(X1, Y1, color = '#306998', width = 0.25, tick_label = labels)
p.bar(X2, Y2, color = '#F89820', width = 0.25, tick_label = labels)
p.bar(X3, Y3, color = '#F0DB4F', width = 0.25, tick_label = labels)

#X-AXIS Label
p.xlabel("YEAR")

#Y-AXIS Label
p.ylabel("POPULARITY")

#Bar Chart Title
p.title("POPULARITY OF LANGUAGES (2015-2019)")

#To Show Legend
p.legend(labels=["Python", "Java", "JavaScript"])

#Displaying the graph
p.show()```

Output. As you can observe clearly, the bar chart depicts that from 2015 to 2019, there’s a rising trend of Python, a falling trend of Java and the JavaScript’s trend remains almost the same.

Let’s create another complex bar graph using the same data that we have used above but now with a different visualization.

Have a look at the following code.

```import matplotlib.pyplot as p

X = [0, 1, 2, 3, 4]

Y1 = [25, 29, 41, 48, 59]
Y2 = [99, 73, 67, 59, 54]

labels = ["2015", "2016", "2017", "2018", "2019"]

width = 0.5

p.bar(X, Y1, width, tick_label = labels, color='#306998')
p.bar(X, Y2, width, tick_label = labels, bottom=Y1, color="#F89820")

#X-AXIS Label
p.xlabel("YEAR")

#Y-AXIS Label
p.ylabel("POPULARITY")
p.title('POPULARITY - PYTHON Vs JAVA (2015-2019)')

#To Show Legend
p.legend(labels=["Python", "Java"])

#To Show Bar Chart
p.show()```

Output. I hope you found this guide useful. If so, do share it with others who are willing to learn Python. If you have any questions related to this article, feel free to ask us in the comments section.

And do not forget to subscribe to WTMatter!