python圆环图添加牵引线的代码
时间: 2023-10-12 14:06:44 浏览: 98
下面是一个使用 matplotlib 库绘制圆环图并添加牵引线的示例代码:
```python
import matplotlib.pyplot as plt
# 数据
sizes = [15, 30, 45, 10]
labels = ['A', 'B', 'C', 'D']
colors = ['#ff9999','#66b3ff','#99ff99','#ffcc99']
# 绘制圆环图
fig1, ax1 = plt.subplots()
ax1.pie(sizes, colors=colors, labels=labels, autopct='%1.1f%%', startangle=90, pctdistance=0.85)
centre_circle = plt.Circle((0,0),0.70,fc='white')
fig = plt.gcf()
fig.gca().add_artist(centre_circle)
# 添加牵引线
patches, texts, autotexts = ax1.pie(sizes, colors=colors, labels=labels, autopct='%1.1f%%', startangle=90, pctdistance=0.85)
for i, text in enumerate(texts):
ang = (sizes[i]/sum(sizes))*360
x, y = autotexts[i].get_position()
if x < 0:
ang += 180
ang_r = ang * (3.14159/180)
text.set_position((1.2*np.sign(x), np.tan(ang_r)*1.2*y))
text.set_rotation(ang)
text.set_va('center')
text.set_ha('center')
plt.axis('equal')
plt.tight_layout()
plt.show()
```
其中,`sizes` 列表存储了每个扇形的大小,`labels` 列表存储了每个扇形的标签,`colors` 列表存储了每个扇形的颜色。
在绘制圆环图时,我们首先创建一个 `Circle` 对象并将其添加到图形中心,以创建一个空心圆环。
然后,我们使用 `autopct='%1.1f%%'` 参数来自动计算每个扇形的百分比,并使用 `pctdistance=0.85` 参数将百分比标签放置在扇形外侧。
最后,我们使用 `autotexts[i].get_position()` 方法获取每个百分比标签的位置,再根据牵引线的起点和终点位置计算出中间点的位置,并将标签位置调整到中间点位置。
阅读全文