2016-10-11 112 views
3

Python新手,坚持使用饼图。 道歉的复杂性,但我在丢失如何进行.. 我有这样的数据集,字典的形式(的一部分)如何创建饼图?

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

我需要生成一个饼图,其中显示了最近一年 - 2013年, 和显示前8原因的死亡代码“原因”从外地“Deaths1”

所以总结起来:

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

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

,然后显示为与任何一个饼图作为治疗前8后“其他”

我可以用SQL,但与Python做到这一点很容易......我不知道。

+0

为什么是高图表标签?不同的编程语言是啊? – AER

+0

对不起,它应该说列表/字典不是数据库 –

回答

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

充分披露,我是ZingChart团队的一员。

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

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

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

+0

看起来不错,但我需要通过蟒蛇做这 –

+0

您好,我很抱歉,我没有发布一个解决方案在python。你可以减少答案。我唯一的Python解决方案是通过我们的在线演示回购。 https://github.com/zingchart-demos/python-django – nardecky