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 ...我不确定。
答案 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;
答案 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)