在matplotlib中使用饼图时仅更改圆内的线特性

在matplotlib中使用饼图时仅更改圆内的线特性,matplotlib,pie-chart,Matplotlib,Pie Chart,当我从matplotlib用饼图分割圆时,我只想更改圆内直线的属性: plt.rcParams['patch.edgecolor'] = 'lightgrey' plt.rcParams['patch.linewidth'] = 1 影响所有直线,包括圆的直线itsef。步骤1-更改“内部”直线 像往常一样,查看matplotlib API文档是个好主意,我们发现plot提供了很多参数,其中一个参数是wedgeprops wedgeprops:[无|记录键值对] 传递给制作饼图的楔形对象的

当我从matplotlib用饼图分割圆时,我只想更改圆内直线的属性:

plt.rcParams['patch.edgecolor'] = 'lightgrey' 
plt.rcParams['patch.linewidth'] = 1 
影响所有直线,包括圆的直线itsef。

步骤1-更改“内部”直线 像往常一样,查看matplotlib API文档是个好主意,我们发现plot提供了很多参数,其中一个参数是
wedgeprops

wedgeprops:[无|记录键值对]
传递给制作饼图的楔形对象的参数的Dict。例如,您可以传入wedgeprops={'linewidth':3}以将楔形边框线的宽度设置为3。有关更多详细信息,请参阅

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

所以你总得打电话

plt.pie([215, 130], colors=['b', 'r'], 
                    wedgeprops = { 'linewidth' : 1 , 'edgecolor' : 'lightgrey'} )
然而,由于这也改变了饼图的轮廓,我们需要

步骤2-设置CirconReference循环 现在,为了在饼图周围获得一个圆,或者恢复饼图CirconReference的初始线型,我们可以在饼图顶部设置一个具有所需属性的新面片

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

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

没有圆,只有楔块……但我们可以创建一个圆,使其看起来就像只改变了“内部”线条一样。查看我的答案的编辑。