如何创建饼图?

时间:2016-10-11 01:17:31

标签: python python-3.x dictionary charts pie-chart

Python新手并坚持使用饼图。 对复杂性表示道歉,但我对如何进行而感到迷茫...... 我有一个字典形式的数据集(部分)

booklist.addfirst(node);

我需要生成一个饼图,显示最近一年 - 2013年, 并从字段'Deaths1'中显示死因代码'Cause'的前8个原因

总结一下:

因此,例如,数据应该过滤为

{'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' .......

然后显示为饼图,其中前八名之后的任何内容都被视为“其他”

我可以用SQL很容易地做到这一点但是用Python ...我不确定。

3 个答案:

答案 0 :(得分:4)

完全披露,我是ZingChart团队的成员。

您可以免费使用ZingChart来完成此操作。我不确定您是否在寻找包含如何解析字典或仅包含数据可视化部分的答案。通过一些简单的属性,我们可以以清晰的方式显示数据。从那里我们可以悬停节点以获取有关节点的更多信息,我们可以单击图例从图中删除节点。这将重新计算剩余的非隐藏节点中每个节点占用的百分比。



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>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以使用Matplotlib在Python中创建饼图

饼图示例: -

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

答案 2 :(得分:1)

您可以尝试Seaborn's饼图。让我们看一个如何使用饼图可视化著名的鸢尾花数据的示例。

您所需要做的就是导入库并对其进行处理:

import seaborn as sns

对于初学者来说,这是head()方法检索到的数据集的前5行: enter image description here

数据集有3个类别: enter image description here

现在,我想将这些类绘制为饼图

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

瞧!

enter image description here