我对pie-chart
标签对齐方式有疑问。
我想在饼图的外部放置标签,并在每个楔形的中心对齐。
根据文档页面,使用“ labeldistance
”参数可以将标签放置在饼图之外,而应该使用"ha" & "va"
参数居中。但是,这两个选项(ha和va)似乎不适用于Matplotlib v2.1.0+
。
1)在此示例中(请参见下文),您可以看到“ 汽车 ”标签未正确居中,偏心了一点。
import matplotlib.pyplot as plt
figure = plt.figure()
axes = figure.add_subplot(111)
axes.set_aspect(1) # circular pie
y = [1,2,3, 4,8,16,18]
label = ['car','domino', 'romancical','testing1', 'thisisthelonglabel',
'fffffffffffffffffffffffffffffffffffffffffff', 'as']
wedges, texts = plt.pie(y,
radius=1.2,
labels=label,
labeldistance=1.0,
rotatelabels =True,
startangle = 10,
wedgeprops = {"linewidth": 0.7,
"edgecolor": "white"},
textprops = dict(ha="center",
va="center")) # doesn't work
plt.show()
我添加了以下几行以强制标签居中,该标签可以工作,但是禁用了“ labeldistance
”参数。这样,我所有的标签都正确地居中了,因为我希望标签与圆形图重叠。
wedges, texts = plt.pie(y,
radius=1.2,
labels=label,
labeldistance=1.0,
rotatelabels =True,
startangle = 10,
wedgeprops = {"linewidth": 0.7,
"edgecolor": "white"},
textprops = dict(ha="center",
va="center"))
for t in texts:
t.set_horizontalalignment("center")
t.set_verticalalignment("center")
plt.show()
所以我的问题是,“ ha
”和“ va
”选项是否对其他用户有效?
有人建议使用labeldistance
和.set_horizontalalignment("center")
时是否保留“ set_verticalalignment("center")
”吗?
谢谢。
答案 0 :(得分:3)
在matplotlib 3.0.2和2.1.2中,使用
textprops = dict(va="center", rotation_mode = 'anchor')
(和labeldistance=1.05
)的结果是
请注意,这里省略了ha="center"
选项,因为最好根据标签位于圆的左侧还是右侧来自动设置水平对齐方式。
有关rotation_mode
的说明,请参见this question或this question。