在Matplotlib饼图中更改线条属性

10

我想让matplotlib饼图的线条变得更浅。因为我有很多“片”,所以线条太粗了,就像这里显示的那样:

enter image description here

我阅读了这个例子,它建议使用像这样的rc参数:

matplotlib.rcParams['text.color'] = 'r'
matplotlib.rcParams['lines.linewidth'] = 2

虽然我可以改变文本颜色,但它并不会改变饼图扇形之间线条的宽度。我认为这是因为扇形不是由线条对象控制,而是由楔形对象控制。所以,有没有一种方法来设置楔形边框样式和颜色呢?

非常感谢, Alex

2个回答

17

试一下这个:

ax = plt.subplot(111) 
wedges, texts = ax.pie(np.abs(np.random.randn(5)))

for w in wedges:
    w.set_linewidth(2)
    w.set_edgecolor('cyan')

饼图

此外,如果你只有一个axes对象,而没有直接访问饼图楔形块的权限,你可以从ax.patches中检索楔形块:

wedges = [patch for patch in ax.patches if isinstance(patch, matplotlib.patches.Wedge)]

@tcaswell 刚刚在 matplotlib 1.3.1 上尝试了一下,没有成功。 - behzad.nouri
1
是的,这很奇怪/不对。大多数绘图签名都有一个 **kwarg,但 pie 没有。如果我今天有时间,我可能会对此做些调整。 - tacaswell
@tcaswell,请赐教!我很想将“linewidth”传入到饼图中… - aclark
@aclark,你能在Github上创建一个关于这个问题的issue吗?否则我会再次忘记 ;) - tacaswell
@tcaswell,我在 GitHub 上添加了这个 问题 - behzad.nouri
显示剩余2条评论

6

我来晚了,但是发现在制作饼图时,可以使用以下方式:

plt.rcParams['lines.linewidth'] = 2

你可以使用:

plt.rcParams['patch.linewidth'] = 0  

此外,若要更改饼图线条的颜色,请使用以下代码:
plt.rcParams['patch.edgecolor'] = 'white' 

替代:

plt.rcParams['line.color'] = 'white'

非常直观和易于基本需求,感谢。 - Konrad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接