在matplotlib中使用饼时,仅更改圆内的线属性

时间:2016-11-21 13:48:31

标签: matplotlib pie-chart

当我使用matplotlib中的饼段分割圆圈时,我想仅在圆圈内更改线条的属性:

plt.rcParams['patch.edgecolor'] = 'lightgrey' 
plt.rcParams['patch.linewidth'] = 1 

影响包括圆圈线在内的所有线条。

1 个答案:

答案 0 :(得分:1)

第1步 - 改变内心'线

像往常一样,查看matplotlib API文档是个好主意,我们发现pie图提供了很多参数,其中一个是wedgeprops

  

wedgeprops:[无|关键值对的词典]
      参数的Dict传递给制作馅饼的楔形物体。例如,您可以传入wedgeprops = {'linewidth':3}来设置楔形边界线的宽度等于3.有关详细信息,请查看doc/arguments of the wedge object

Wedge的一个参数是edgecolor,另一个是linewidth

总而言之,你必须致电

plt.pie([215, 130], colors=['b', 'r'], 
                    wedgeprops = { 'linewidth' : 1 , 'edgecolor' : 'lightgrey'} )

但是,由于这也改变了我们需要的饼图的轮廓......

第2步 - 设置圆周会议

现在,为了围绕饼图获得一个圆圈,或者恢复饼图圆周的初始线型,我们可以在饼图上设置一个具有所需属性的新Circle面片。

完整的解决方案看起来像这样

import matplotlib.pyplot as plt
import matplotlib.patches

fig, ax = plt.subplots(figsize=(3,3))
ax.axis('equal')

slices, labels = ax.pie([186, 130, 85], colors=['b', 'r','y'], 
                    wedgeprops = { 'linewidth' : 1 , 'edgecolor' : 'lightgrey'} )

# get the center and radius of the pie wedges
center = slices[0].center
r = slices[0].r
# create a new circle with the desired properties
circle = matplotlib.patches.Circle(center, r, fill=False, edgecolor="k", linewidth=2)
# add the circle to the axes
ax.add_patch(circle)

plt.show()

enter image description here