Donut Chart using Matplotlib in Python
Last Updated :
27 Mar, 2023
Prerequisites: Pie Chart in matplotlib
Donut charts are the modified version of Pie Charts with the area of center cut out. A donut is more concerned about the use of area of arcs to represent the information in the most effective manner instead of Pie chart which is more focused on comparing the proportion area between the slices. Donut charts are more efficient in terms of space because the blank space inside the donut charts can be used to display some additional information about the donut chart.
For being a Donut chart it must be necessarily a Pie chart. If we look at the pie chart, we will focus on the center of the chart. Donut charts, on the other hand, eliminates the need to compare the size or area of the slice and shifts the focus on the length of the arc, which in turn is easy to measure.
Creating a Simple Donut Chart
Creating a Donut Chart involves three simple steps which are as follows :
- Create a Pie Chart
- Draw a circle of suitable dimensions.
- Add circle at the Center of Pie chart
Python3
import matplotlib.pyplot as plt
# Setting labels for items in Chart
Employee = ['Roshni', 'Shyam', 'Priyanshi',
'Harshit', 'Anmol']
# Setting size in Chart based on
# given values
Salary = [40000, 50000, 70000, 54000, 44000]
# colors
colors = ['#FF0000', '#0000FF', '#FFFF00',
'#ADFF2F', '#FFA500']
# explosion
explode = (0.05, 0.05, 0.05, 0.05, 0.05)
# Pie Chart
plt.pie(Salary, colors=colors, labels=Employee,
autopct='%1.1f%%', pctdistance=0.85,
explode=explode)
# draw circle
centre_circle = plt.Circle((0, 0), 0.70, fc='white')
fig = plt.gcf()
# Adding Circle in Pie chart
fig.gca().add_artist(centre_circle)
# Adding Title of chart
plt.title('Employee Salary Details')
# Displaying Chart
plt.show()
Output:

Customizing the Donut Chart
Adding Legends to the Donut ChartÂ
A graph legend generally appears in form of a box to the right or left in the graph. It contains small samples of each color on the graph as well as a short description of what each color means in the graph.
To add legends we will simply write the following code.
plt.legend(labels, loc = "upper right")
Here plt.legend() takes two parameters the first is labels and loc is used to set the location of legend box.
Example:Â
Python3
import matplotlib.pyplot as plt
# Setting size in Chart based on
# given values
sizes = [100, 500, 70, 54, 440]
# Setting labels for items in Chart
labels = ['Apple', 'Banana', 'Mango', 'Grapes', 'Orange']
# colors
colors = ['#FF0000', '#0000FF', '#FFFF00', '#ADFF2F', '#FFA500']
# explosion
explode = (0.05, 0.05, 0.05, 0.05, 0.05)
# Pie Chart
plt.pie(sizes, colors=colors, labels=labels,
autopct='%1.1f%%', pctdistance=0.85,
explode=explode)
# draw circle
centre_circle = plt.Circle((0, 0), 0.70, fc='white')
fig = plt.gcf()
# Adding Circle in Pie chart
fig.gca().add_artist(centre_circle)
# Adding Title of chart
plt.title('Favourite Fruit Survey')
# Add Legends
plt.legend(labels, loc="upper right")
# Displaying Chart
plt.show()
Output:

Adding Title to the Legend Box in Donut Chart
We can add a title to the Legend Box in Donut Chart by writing the following code:
plt.legend(labels, loc = "upper right",title="Fruits Color")
Example:
Python3
import matplotlib.pyplot as plt
# Setting size in Chart based on
# given values
sizes = [100, 500, 70, 54, 440]
# Setting labels for items in Chart
labels = ['Apple', 'Banana', 'Mango', 'Grapes',
'Orange']
# colors
colors = ['#FF0000', '#0000FF', '#FFFF00', '#ADFF2F',
'#FFA500']
# explosion
explode = (0.05, 0.05, 0.05, 0.05, 0.05)
# Pie Chart
plt.pie(sizes, colors=colors, labels=labels,
autopct='%1.1f%%', pctdistance=0.85,
explode=explode)
# draw circle
centre_circle = plt.Circle((0, 0), 0.70, fc='white')
fig = plt.gcf()
# Adding Circle in Pie chart
fig.gca().add_artist(centre_circle)
# Adding Title of chart
plt.title('Favourite Fruit Survey')
# Add Legends
plt.legend(labels, loc="upper right", title="Fruits Color")
# Displaying Chart
plt.show()
Output:

Example 2: Consider another situation that you have to prepare a report of marks obtained by different students in a test and visualize their performance by using a donut chart. To solve this problem we will use matplotlib library of python. The idea is that we will make a list of names of different students and another list of their respective marks and use this list to make a donut chart.
Python3
# library
import matplotlib.pyplot as plt
# list of name of students
names = ['Manish', 'Atul', 'Priya', 'Harshit']
# list of their respective marks
marks = [45, 66, 55, 77]
# Create a circle at the center of
# the plot
my_circle = plt.Circle((0, 0), 0.7, color='white')
# Give color names
plt.pie(marks, labels=names, autopct='%1.1f%%',
colors=['red', 'green', 'blue', 'yellow'])
p = plt.gcf()
p.gca().add_artist(my_circle)
# Show the graph
plt.show()
Output:

Similar Reads
Line chart in Matplotlib - Python Matplotlib is a data visualization library in Python. The pyplot, a sublibrary of Matplotlib, is a collection of functions that helps in creating a variety of charts. Line charts are used to represent the relation between two data X and Y on a different axis. In this article, we will learn about lin
6 min read
Python | Basic Gantt chart using Matplotlib Prerequisites : Matplotlib IntroductionIn this article, we will be discussing how to plot a Gantt Chart in Python using Matplotlib.A Gantt chart is a graphical depiction of a project schedule or task schedule (In OS). It's is a type of bar chart that shows the start and finish dates of several eleme
3 min read
Plot a Pie Chart in Python using Matplotlib A Pie Chart is a circular statistical plot that can display only one series of data. The area of the chart is the total percentage of the given data. Pie charts in Python are widely used in business presentations, reports, and dashboards due to their simplicity and effectiveness in displaying data d
8 min read
Filled area chart using plotly in Python Plotly is a Python library that is used to design graphs, especially interactive graphs. It can plot various graphs and charts like histograms, bar plots, box plots, spread plots, and many more. It is mainly used in data analysis as well as financial analysis. Plotly is an interactive visualization
6 min read
How to import matplotlib in Python? Matplotlib is a Python library used to create different types of charts and graphs. It helps to turn data into visual formats like line charts, bar graphs and histograms. This makes it easier to understand and present your data. In this guide youâll learn how to install and import Matplotlib in Pyth
1 min read
Plotting Histogram in Python using Matplotlib Histograms are a fundamental tool in data visualization, providing a graphical representation of the distribution of data. They are particularly useful for exploring continuous data, such as numerical measurements or sensor readings. This article will guide you through the process of Plot Histogram
6 min read