python绘制饼图explode_python通过matplotlib生成复合饼图
可以通過matplotlib實現
from matplotlib.patches import ConnectionPatch
#制畫布fig = plt.figure(figsize=(9,5.0625))
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122)
fig.subplots_adjust(wspace=0)
#大餅圖的制作
labels = newdata8.index
size = newdata8.quantity
explode=(0,0,0,0,0,0.1)
ax1.pie(size, autopct='%1.1f%%',startangle=30,labels=labels,explode=explode)
#小餅圖的制作
labels2 = others.index
size2 = others.quantity
width=0.2
ax2.pie(size2, autopct='%1.1f%%',startangle=90,labels=labels2,
radius=0.5,shadow=True)
#使用ConnectionPatch畫出兩個餅圖的間連線
#先得到餅圖邊緣的數據
theta1, theta2 = ax1.patches[5].theta1, ax1.patches[5].theta2
center, r = ax1.patches[5].center,ax1.patches[5].r
#畫出上邊緣的連線
x = r*np.cos(np.pi/180*theta2)+center[0]
y = np.sin(np.pi/180*theta2)+center[1]
con = ConnectionPatch(xyA=(-width/2,0.5),xyB=(x,y),
coordsA='data', coordsB='data',axesA=ax2,axesB=ax1)
con.set_linewidth(2)
con.set_color=([0,0,0])
ax2.add_artist(con)
#畫出下邊緣的連線
x = r*np.cos(np.pi/180*theta1)+center[0]
y = np.sin(np.pi/180*theta1)+center[1]
con = ConnectionPatch(xyA=(-width/2,-0.5),xyB=(x,y),
coordsA='data', coordsB='data',axesA=ax2,axesB=ax1)
con.set_linewidth(2)
con.set_color=([0,0,0])
ax2.add_artist(con)plt.show()
輸出:
圖源數據為快餐店銷量
總結
以上所述是小編給大家介紹的python通過matplotlib實現生成復合餅圖,希望對大家有所幫助!
時間: 2020-02-04
總結
以上是生活随笔為你收集整理的python绘制饼图explode_python通过matplotlib生成复合饼图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: http中的请求头各部分都是什么意思_小
- 下一篇: 简述数据字典的结构及其作用_数据结构——