标签对齐网饼图/matplotlib 2.1.0+;

标签对齐网饼图/matplotlib 2.1.0+;,matplotlib,label,alignment,pie-chart,labeling,Matplotlib,Label,Alignment,Pie Chart,Labeling,我有一个关于饼图标签对齐的问题。 我希望在饼图外有标签,并以每个楔子为中心。 根据文档页面,“labeldistance”参数允许将标签放置在饼图外,“ha”和“va”参数应居中。但是,这两个选项(ha和va)似乎不适用于Matplotlib v2.1.0+。 1) 通过这个示例(请参见下文),您可以看到“汽车”标签没有正确居中,它有点偏离中心 import matplotlib.pyplot as plt figure = plt.figure() axes = figure.add_subp

我有一个关于
饼图
标签对齐的问题。
我希望在饼图外有标签,并以每个楔子为中心。
根据文档页面,“
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
”选项是否适用于其他用户? 在使用
.set\u horizontalalignment(“center”)
set\u verticalalignment(“center”)
时,是否有办法保持“
标签距离”


多谢各位

在matplotlib 3.0.2和2.1.2中,使用

textprops = dict(va="center", rotation_mode = 'anchor')
(和
labeldistance=1.05
)导致

请注意,这样就省去了
ha=“center”
选项,因为最好根据标签是在圆的左侧还是右侧自动设置水平对齐


有关旋转模式的说明,请参见例如或。

您正在将水平和垂直对齐设置为“中心”,但只需将垂直对齐设置为“中心”。换句话说,删除行
ha=“center”
t.set\u水平对齐(“center”)
。如果有任何问题,请将水平对齐设置为“左”。另请参见,它可能是相关的。对于我来说,在2.2.2中,两个代码都会生成第二个figure@ThomasKühn:隐藏
ha
或将其设置为左侧似乎也不起作用work@Bazingaa我只有Maplotlib 3.0.2可用。