饼图简介
饼图显示一个数据系列 (数据系列:在图表中绘制的相关数据点,这些数据源自数据表的行或列。图表中的每个数据系列具有唯一的颜色或图案并且在图表的图例中表示。可以在图表中绘制一个或多个数据系列。饼图只有一个数据系列。)中各项的大小与各项总和的比例。饼图中的数据点 (数据点:在图表中绘制的单个值,这些值由条形、柱形、折线、饼图或圆环图的扇面、圆点和其他被称为数据标记的图形表示。相同颜色的数据标记组成一个数据系列。)显示为整个饼图的百分比。
使用要求
1、仅有一个要绘制的数据系列
2、要绘制的数值没有负值
3、要绘制的数值几乎没有零值
4、类别数目无限制
5、各类别分别代表整个饼图的一部分
6、各个部分需要标注百分比
基本饼图
使用Plotly绘制饼图需要使用graph_objs中的Pie函数。Pie函数中有两个最常用的属性,一个是values属性,用于赋给其需要的可视化数据;另一个是labels,表示不同数据对应的标签。
代码实现
import plotly as py
import plotly.graph_objs as go
pyplt=py.offline.plot
labels=['股票','债券','现金','衍生品','其他']
values=[33.7,20.33,9.9,8.6,27.47]
trace=[go.Pie(labels=labels,values=values)]
layout=go.Layout(
title='基金资产配置比例图'
)
fig=go.Figure(data=trace,layout=layout)
pyplt(fig,filename='temp/基本饼图.html')
效果截图
环形饼图
绘制环形图时,只需要在Pie函数中设置控制环形中心空白大小的hole属性即可。Pie函数中的hoverinfo属性用于控制当用户将鼠标放在环形图上时显示的内容,设置为”label+percent”表示显示标签加数据所占比例。
代码实现
import plotly as py
import plotly.graph_objs as go
pyplt=py.offline.plot
labels=['完成','未完成']
values=[0.7,0.3]
trace=[go.Pie(
labels=labels,
values=values,
hole=0.7, #控制环形中心空白大小
hoverinfo='label+percent' #hoverinfo属性用于控制当用户将鼠标指针放到环形图上时,显示的内容
)]
layout=go.Layout(
title='工作进程图',
)
fig=go.Figure(data=trace,layout=layout)
pyplt(fig,filename='temp/环形饼图.html')
效果截图
饼图样式
代码实现
import plotly as py
import plotly.graph_objs as go
pyplt=py.offline.plot
labels=['上海国际集团有限公司','中国移动集团有限公司','富德生命人寿-传统','富德生命人寿-资本金','上海上国投资产管理有限公司']
values=[4222533311,4103763711,2138028672,1356332558,1073516173]
colors=['#104E8B','#1874CD','#1C86EE','#6495ED']
trace=[go.Pie(
labels=labels,
values=values,
rotation=30,
opacity=1,
showlegend=False,
pull=[0.1,0,0,0,0],
hoverinfo='label+percent',
textinfo='percent',
textfont=dict(size=30,color='white'),
marker=dict(colors=colors,line=dict(color='#000000',width=2))
)]
fig=go.Figure(data=trace)
pyplt(trace,filename='temp/饼图样式设置.html')
效果截图
饼图案例
代码实现!
import plotly as py
import plotly.graph_objs as go
pyplt=py.offline.plot
fig={
"data":[
{
"values":[9884,9510,9363,7961,6755],
"labels":['金瑞期货','海通期货','国泰君安','银海期货','五矿经易'],
'domain':{'x':[0,0.6],'y':[0,0.5]},
'name':"AU.SHF多头持仓",
'hoverinfo':"label+percent+name",
'hole':.4,
'type':"pie"
},
{
'values':[8847,6229,2764,2406,2022],
'labels':['中信期货','招财期货','国贸期货','铜冠金源','中银国际'],
'domain':{'x':[.2,1],'y':[0,.5]},
'name':"AU.SHF空头持仓",
'hoverinfo':'label+percent+name',
'hole':.4,
'type':'pie'
},
{
'values':[14393,12220,11824,11233,10072],
'labels':['中信期货','东证期货','海通期货','方正中期','国泰君安'],
'domain':{'x':[0,.9],'y':[.5,1]},
'name':'AG.SHF多头持仓',
'hoverinfo':'label+percent+name',
'hole':.4,
'type':'pie'
},
{
'values':[30983,20699,16781,15686,14198],
'labels':['中信期货','国泰君安','海通期货','国贸期货','永安期货'],
'domain':{'x':[0.5,1],'y':[0.5,1]},
'name':'AG.SHF空头持仓',
'hoverinfo':'label+percent+name',
'hole':.4,
'type':'pie'
}
],
'layout':{
'title':'有色金属板块主力合约多空持仓分布图',
'annotations':[
{
'font':{'size':18},
'showarrow':False,
'text':'AU.SHF多头持仓',
'x':0.45,
'y':0.754
},
{
'font':{'size':18},
'showarrow':False,
'text':'AU.SHF多头持仓',
'x':0.794,
'y':0.754
},
{
'font':{'size':18},
'showarrow':False,
'text':'AU.SHF多头持仓',
'x':0.255,
'y':0.23
},
{
'font':{'size':18},
'showarrow':False,
'text':'AG.SHF空头持仓',
'x':0.6,
'y':0.23
}]
}
}
pyplt(fig,filename='temp/饼图应用案例.html')
效果截图!
反思总结
-
通过这几个基本图形的学习,其他的图形案例用法基本如此。
-
Plotly的格式是严格的,所以需要记住它的基本结构。以及一些参数。
-
不能自以为是,学会这些还不算学会数据分析。