对于饼图标签Matplotlib居中对齐(Matplotlib center alignment f

2019-09-30 09:22发布

我公司生产的使用Python Matplotlib一个非常简单的饼图,我想编辑我的标签的对齐方式。 我用\n我的标签内分割线的标签过长一行。 但你可以从所谓的“饼图形象”的图片中看到,这是在目前怪异路线的混合。 我真的很想拥有它居中对齐。

对于Matplotlib其他图/图表类型有一种说法叫align ,你可以将其设置为center ,然而, plt.pie(...)似乎并不具有这个属性。

这里是我的代码:

import matplotlib.pyplot as plt
k = [7,15]
labels = 'Strongly and Mostly \n Agree', 'Strongly/Mostly Disagree \n  and In the Middle'
plt.pie(k, labels= labels)
plt.show()

有任何想法吗?

Answer 1:

你可以通过文本属性的字典plt.pie通过textprops说法。 例如:

plt.pie(k, labels=labels, textprops={'weight': 'bold'})

但是,如果你试图指定horizontalalignment属性,你会得到一个错误,说你提供的参数两次。 很显然,你没有,但matplotlib通过两个是硬编码的价值和你的价值的一些内部函数。

但是,这可能是一件好事。 我看到它的方式,有没有那么多比对的组合,而是针对馅饼文本的一致对齐。

回到你的问题

pie返回该补丁和每个楔形的标签。 所以,你可以循环通过你的初始呼叫后标签pie修改其对齐。 这看起来是这样的:

k = [7, 15]
labels = 'Strongly and Mostly\nAgree', 'Strongly/Mostly Disagree\nand In the Middle'
fig, ax = plt.subplots()
ax.set_aspect('equal')
wedges, labels = ax.pie(k, labels=labels, textprops={'weight': 'bold'})
for label in labels:
    label.set_horizontalalignment('center')

正如你所看到的,标签现在用楔子重叠,减少可读性。

标签也有set_position方法(即label.set_position((x, y))但在饼图中重复计算N个标签的位置听起来像一个坏的时间给我。



文章来源: Matplotlib center alignment for pie chart labels