matplotlib极坐标图设置标签位置

时间:2016-02-19 06:09:24

标签: python matplotlib

我试图重新定位y或" r"极地情节上的标签:

import numpy as np
import matplotlib.pyplot as plt
theta = np.linspace(0, 2 * np.pi)
r = np.linspace(0, 2)
plt.polar(theta, r)
rlab = plt.ylabel("Directivity [dB]")
rlab.set_position((1.0, 0.6))
rlab.set_rotation(0)
plt.show()

给出:

/Users/Atom/figure_1.png

似乎忽略了x位置参数。我希望标签出现在情节之外,在yticks的右上方。

1 个答案:

答案 0 :(得分:1)

位置正在改变,命令不会被忽略。您可以在x中使用rlab.set_position((1.0, x))的值进行检查。

话虽如此,我没有发现位置元组中第一个参数的任何影响。更令人惊讶的是,第一个值正在被重置:

>>> rlab.get_position()
(372.8395415374975, 0.6)
>>> %hist -op 57-62
>>> rlab.set_position((5.0, 0.9))
>>> rlab.get_position()
(5.0, 0.9)
>>> plt.show()
>>> rlab.get_position()
(372.8395415374975, 0.9)

因此,当垂直位置被改变时,水平位置不会被改变。似乎是开发人员的错误或故意的意图。

作为一种解决方法,您可以使用定位文本标签:

ax = plt.gca()
plt.text(1, .8, "test", transform=ax.transAxes)

或者,您可以在ylabel中添加填充,如下所示:

ax.yaxis.labelpad = -100 # negative padding pushes the label to the right

(这是一个建议elsewhere on stackoverflow),但我发现这种方法不够灵活。