简体   繁体   中英

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.

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>

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()

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: 在此处输入图片说明

The dataset has 3 classes: 在此处输入图片说明

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!

在此处输入图片说明

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM