Alex of the Wild
Alex of the Wild

Reputation: 155

How to create pie chart?

new to Python and stuck with a pie chart. Apologies for the complexity but I am at a lost as how to proceed .. I have this dataset in the form of a dictionary (part of it)

{'Deaths5': 94, 'Deaths10': 379, 'Deaths12': 388, 'Deaths8': 138, 'Deaths25': None,
 'IM_Deaths2': None, 'Deaths14': 511, 'Deaths1': 20535, 'Deaths23': 2643, 'Deaths6': 62,
 'IM_Deaths1': 4349, 'Deaths17': 1036, 'Deaths18': 1234, 'Sex': '2', 'Deaths11': 358, 'Deaths22': 1708,
 'Deaths21': 1922, 'IM_Frmat': '08', 'SubDiv': '', 'Deaths15': 600, 'Deaths4': 157, 'Admin1': '',
 'IM_Deaths3': None, 'Deaths19': 1125, 'Deaths24': None, 'Frmat': '01', 'Deaths20': 1602, 'Deaths3': 350,
 'Year': '1964', 'Deaths7': 149, 'Deaths9': 311, 'Deaths26': 33, 'Country': '2150',
 'Deaths16': 932, 'Deaths13': 454, 'Deaths2': 4349, 'IM_Deaths4': None, 'Cause': 'A000', 'List': '07A' .......

I need to generate a pie chart that shows the latest year - 2013, and shows the top 8 causes of death code 'Cause' from field 'Deaths1'

So to sum it up:

So for example the data should be filtered as

Year    CAUSE    Top8
2013     A000    5000
2013     A411    400
2013     A50     200
.....

and then shown as a pie chart with anything after the top 8 treated as 'other'

I could do this very easily with SQL but with Python...I am not sure.

Upvotes: 5

Views: 9413

Answers (3)

Steffi Keran Rani J
Steffi Keran Rani J

Reputation: 4093

You can try Seaborn's Pie Plot. Let's see an example of how pie plot was used to visualize the famous Iris flower data.

All you have to do is to import the library and play around with it:

import seaborn as sns

For starters, here's the dataset's top 5 rows retrieved by the head() method: enter image description here

The dataset has 3 classes: enter image description here

Now, I wanted to plot the classes as pie chart

dataset['Class'].value_counts().plot.pie(explode=[0.05, 0.05,0.05], autopct='%1.1f%%', shadow=True, figsize=(8,8))
plt.title('Pie Chart for Class')
plt.show()

And voila!

enter image description here

Upvotes: 2

nardecky
nardecky

Reputation: 2631

Full disclosure, I'm a member of the ZingChart team.

You can use ZingChart for free to accomplish this. I'm not sure if you were looking for the answer to include how to parse the dictionary or just the data visualization portion. With some simple attributes we can display the data in a legible manner. From there we can hover nodes to get more information about the node and we can click on the legend to remove a node from the graph. This will re calculate the percentage taken up be each node amongst remaining, non hidden nodes.

var myConfig = {
 	type: 'pie',
 	title:{
 	  text: '2013 Deaths',
 	  adjustlayout: true
 	},
 	legend:{
 	  toggleAction: 'remove'
 	},
 	plot:{
 	  valueBox:{ // hard label
 	    placement:'out'
 	  }
 	},
 	tooltip:{ // for node hover
 	  text:'%t: Had %v deaths in 2013'
 	},
	series: [
		{
			values: [5000],
			text: 'A000'
		},
		{
			values: [400],
			text: 'A411'
		},
		{
			values: [200],
			text: 'A00'
		},
		{
			values: [900],
			text: 'Other'
		}
	]
};

zingchart.render({ 
	id: 'myChart', 
	data: myConfig, 
	height: '100%', 
	width: '100%' 
});
html, body {
	height:100%;
	width:100%;
	margin:0;
	padding:0;
}
#myChart {
	height:100%;
	width:100%;
	min-height:150px;
}
<!DOCTYPE html>
<html>
	<head>
	<!--Assets will be injected here on compile. Use the assets button above-->
		<script src= "https://cdn.zingchart.com/zingchart.min.js"></script>
		<script> zingchart.MODULESDIR = "https://cdn.zingchart.com/modules/";
		ZC.LICENSE = ["569d52cefae586f634c54f86dc99e6a9","ee6b7db5b51705a13dc2339db3edaf6d"];</script>
	<!--Inject End-->
	</head>
	<body>
		<div id="myChart"></div>
	</body>
</html>

Upvotes: 3

Rajiv Sharma
Rajiv Sharma

Reputation: 7112

You can use Matplotlib for creating Pie charts in Python

Example Pie Chart:-

import matplotlib.pyplot as plt

labels = 'A', 'B', 'C', 'D'
sizes = [40, 20, 20, 20]
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']
explode = (0, 0.1, 0, 0)
plt.pie(sizes, explode=explode, labels=labels, colors=colors,
        autopct='%1.1f%%', shadow=True, startangle=90)
plt.axis('equal')
plt.title('Year 2013')
plt.show()

Upvotes: 3

Related Questions