Skip to content

Pythoneo

Online How to Python stuff

How to insert Pie Chart in Matplotlib?

Posted on July 9, 2021July 4, 2022 By Luke K

Let’s learn to insert a pie chart in the Python Matplotlib library. I’ll show you the easiest way.
matplotlib pie chart edgecolor
To insert a chart, we need to prepare the data for visualization.

import matplotlib.pyplot as plt

products_sold = [55, 72, 63, 47, 58]
salesman = ['Joe', 'Monica', 'Tom', 'Ana', 'Paul']

I imported matplotlib and prepared a list of salesman and products they sold.

Plt pie

To create a pie chart I need to use pie function and use products_sold as an argument

import matplotlib.pyplot as plt

products_sold = [55, 72, 63, 47, 58]
salesman = ['Joe', 'Monica', 'Tom', 'Ana', 'Paul']

plt.pie(products_sold)
plt.show()

This is the first version of pie chart.

new empty matplotlib chart

I like it but it needs a few improvements because it is not very useful.

Plt title

Let’s start from adding a title with title function.

import matplotlib.pyplot as plt

products_sold = [55, 72, 63, 47, 58]
salesman = ['Joe', 'Monica', 'Tom', 'Ana', 'Paul']

plt.pie(products_sold)

plt.title('Python course sales')
plt.show()

matplotlib pie chart title

Title is here. Now let’s add labels.

See also  How to create Seaborn Heatmap?

Adding labels

To add labels I added labels as an additional parameter to pie function. I set salesman as a list of labels.

import matplotlib.pyplot as plt

products_sold = [55, 72, 63, 47, 58]
salesman = ['Joe', 'Monica', 'Tom', 'Ana', 'Paul']

plt.pie(products_sold, labels=salesman)

plt.title('Python course sales')
plt.show()

matplotlib pie chart labels

It is getting better. Now at least I know what is this pie chart about.

Adding values

Next thing I need are values.

To add values I used autopct argument. To define the format of my values I used %.0f%%’ because I can see digits without decimals (0 decimals).

import matplotlib.pyplot as plt

products_sold = [55, 72, 63, 47, 58]
salesman = ['Joe', 'Monica', 'Tom', 'Ana', 'Paul']

plt.pie(products_sold, labels=salesman, autopct='%.0f%%')

plt.title('Python course sales')
plt.show()

matplotlib pie chart autopercentage

With autopercentage I can see the first basic version of pie chart I can see.

Define an explode

Still it is not enough for me. I’d like explode the sales of Monica. To explode a slice of pie chart in Matplotlib I need to define explode list first. 0.2 is how much it needs to be exploded. Then I added explod parameter to pie function.

import matplotlib.pyplot as plt

products_sold = [55, 72, 63, 47, 58]
salesman = ['Joe', 'Monica', 'Tom', 'Ana', 'Paul']

explode = [0, 0.2, 0, 0, 0]

plt.pie(products_sold, labels=salesman, autopct='%.0f%%', explode=explode)

plt.title('Python course sales')
plt.show()

matplotlib pie chart explode slice

A slice is exploded out now.

See also  Exploding out slices of a Pie Chart in Plotly

Adding a startangle parameter

I’m still not very pleased with the chart. Exploded slice is too close to the chart’s title. I’d like to move the chart a bit counterclockwise. Adding startangle parameter with value of 20 does the job.

import matplotlib.pyplot as plt

products_sold = [55, 72, 63, 47, 58]
salesman = ['Joe', 'Monica', 'Tom', 'Ana', 'Paul']

explode = [0, 0.2, 0, 0, 0]

plt.pie(products_sold, labels=salesman, autopct='%.0f%%', explode=explode, startangle=20)

plt.title('Python course sales')
plt.show()

matplotlib pie chart startangle

This is much better! What can I do to make it more beutiful?

Enable a shadow effect

I’d like to see it more 3D. To do it I need just to enable shadow effect.

import matplotlib.pyplot as plt

products_sold = [55, 72, 63, 47, 58]
salesman = ['Joe', 'Monica', 'Tom', 'Ana', 'Paul']

explode = [0, 0.2, 0, 0, 0]

plt.pie(products_sold, labels=salesman, autopct='%.0f%%', explode=explode, startangle=20, shadow=True)

plt.title('Python course sales')
plt.show()

matplotlib pie chart shadow

The radius parameter

If you’d like to enlarge your pie chart you can also do it easily. Radius parameter is responsible for pie chart size. By deafault it is 1. To increase the size by 10% just use 1.1 like that.

See also  How to create a BarPlot in SeaBorn?

matplotlib pie chart enlarge

Also adding edge color would look nice. I’d like to see black. To do it you need to use wedgeprops parameter.

import matplotlib.pyplot as plt

products_sold = [55, 72, 63, 47, 58]
salesman = ['Joe', 'Monica', 'Tom', 'Ana', 'Paul']

explode = [0, 0.2, 0, 0, 0]

plt.pie(products_sold, labels=salesman, autopct='%.0f%%',
        explode=explode, startangle=20, shadow=True, radius=1.1, wedgeprops={'edgecolor': 'black'})

plt.title('Python course sales')
plt.show()

matplotlib pie chart edgecolor

My pie chart is ready. I like it a lot. I hope you do as well.

matplotlib Tags:chart, pie

Post navigation

Previous Post: How to plot Errorbar using Matplotlib?
Next Post: How to calculate determinant of matrix?

Categories

  • bokeh (1)
  • datetime (3)
  • Django (5)
  • glob (1)
  • io (1)
  • json (1)
  • math (5)
  • matplotlib (10)
  • numpy (95)
  • OpenCV (1)
  • os (3)
  • Pandas (2)
  • paramiko (1)
  • pathlib (2)
  • Pillow (3)
  • Plotly (3)
  • Python (29)
  • random (7)
  • requests (1)
  • Scipy (4)
  • Seaborn (7)
  • shutil (1)
  • sqlite3 (1)
  • statistics (16)
  • sys (1)
  • Tkinter (9)
  • turtle (2)
  • Uncategorized (1)
  • urllib (1)
  • webbrowser (1)

RSS RSS

  • How to create violin plot using seaborn?
  • How To Use Colormaps In Matplotlib?
  • How to calculate bonds in Python
  • How to handle trigonometry in Python
  • How to Convert Int to Binary in Python?
  • How to fix ValueError: The truth value of an array with zero elements is ambiguous?
  • How to solve NameError: name ‘numpy’ is not defined
  • How to insert seaborn lineplot?
  • How to Find the Length of an Array in Python?
  • How to reset secret key in Django

Tags

arithmetic mean array axis button calculations chart conversion copy count counter data type dictionary dimension draw error files fill float generate grid GUI image index integer list matrix max mean median min normal distribution plot random reshape rotate round size standard deviation string sum test text time variance zero

Copyright © 2023 Pythoneo.

Powered by PressBook WordPress theme

We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies.
Cookie settingsACCEPT
Manage consent

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
SAVE & ACCEPT