PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Friday, April 22, 2022

[FIXED] How to make subplots in donut pie chart using matplotlib?

 April 22, 2022     matplotlib, pie-chart, python     No comments   

Issue

How can Python's matplotlib be used to make subplots for donut pie charts?

Below is the code I wrote :

import matplotlib.pyplot as plt

labels = 'Frogs', 'Hogs', 'Dogs'
sizes = [15, 30, 45]
colors = ['yellowgreen', 'gold', 'lightskyblue']
explode = (0, 0, 0)  # explode a slice if required
subgroup_names = ['A.1', 'A.2', 'A.3', 'B.1', 'B.2', 'C.1']
subgroup_size = [13, 3, 5, 6, 5, 10]
a, b, c = [plt.cm.Blues, plt.cm.Reds, plt.cm.Greens]

plt.pie(sizes, explode=explode, labels=labels, pctdistance=0.45, labeldistance=0.65, colors=colors, autopct='%.2f%%', shadow=True)
centre_circle = plt.Circle((0, 0), 0.175, color='black', fc='white', linewidth=1.25)

plt.pie(subgroup_size, labels=subgroup_names, pctdistance=0.85, labeldistance=1.25, colors=[a(0.5), a(0.4), a(0.3), b(0.5), b(0.4), c(0.6)], autopct='%.2f%%', shadow=True)
centre_circle2 = plt.Circle((0, 0), 0.275, color='red', fc='white', linewidth=1.25)

fig = plt.gcf()
fig.gca().add_artist(centre_circle)
fig.gca().add_artist(centre_circle2)


plt.axis('equal')
plt.show()

The result shows like below picture :

this is result image from my coding

But I hope the result will look similar to the below image :

(I have to display the percentage value)

this is the result I hope come out(with percentage value)


Solution

Matplotlib documentation has very nice examples for almost everything you can dream of. Please see here for a nested pie chart.

Following the comment on link-only answers, the keyword radius is what you are looking for in your call to pie(). It takes in a float which determines the absolute radius of your pie. Drawing nested pies thereby requires multiple calls to pie(), each with a different value of radius. Please see an example below

import matplotlib.pyplot as plt
plt.pie([1, 2, 3], radius=1,
        colors=['xkcd:cerulean', 'xkcd:bright red', 'xkcd:grass green'],
        labels=['Group A', 'Group B', 'Group C'], autopct='%.2f%%',
        pctdistance=0.85, shadow=True,
        wedgeprops=dict(width=0.3, edgecolor='white'))

plt.pie([0.3, 0.7, 0.4, 1.5, 0.1, 3], radius=0.7,
        colors=['xkcd:sky blue', 'xkcd:light blue', 'xkcd:reddish pink',
                'xkcd:salmon pink', 'xkcd:baby pink', 'xkcd:apple green'],
        wedgeprops=dict(width=0.3, edgecolor='white'),
        labels=['A.1', 'A.2', 'B.1', 'B.2', 'B.3', 'C.1'], autopct='%.2f%%',
        pctdistance=0.8, labeldistance=0.4, shadow=True)
plt.axis('equal')
plt.show()

which returns the following plot enter image description here



Answered By - Patol75
Answer Checked By - Timothy Miller (PHPFixing Admin)
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing