如何根据所述轴上的位置设置轴标签的位置?

时间:2014-10-27 14:37:34

标签: python matplotlib

我想将我的轴标签Number of States移到左边,这样它实际上超过了我的数字。其他类似的问题/答案建议使用labelpad,但这会使文本向上或向下移动,而不是向左/向右移动。如何将我的标题移到右边?

我也试过horizontalalignment kwarg,a。似乎已将rightleft对齐方式颠倒过来,并且也不会将标题移动得足够远,也无法对其确切位置进行任何实际控制。

我发现我可以使用_x设置_y实例的Textset_[xy]()属性,但它看起来有点像hacky。有没有一种方便的方法我可以设置相对于xaxis上的值的hte title的位置?

enter image description here

1 个答案:

答案 0 :(得分:2)

您可以抓取标题对象并将其各自的位置属性设置为您喜欢的任何位置。 一个简单的例子可能是:

%matplotlib inline
import matplotlib.pyplot as plt
plt.plot([1,2,3])
ti=plt.title('foo')
ti.set_position((0.2,1))

创建了一个像
的情节 enter image description here
请注意,位置设置为相对坐标。

@ThePredator建议的位置参数(loc:{'center','left','right'},参见docs也可以以类似的方式工作。

更新

要设置文本在数据坐标系中的位置而不是轴坐标,可以使用简单的转换。有关详细信息,请查看Transformation Documentation。一个最小的例子可能是:

%matplotlib inline
import matplotlib.pyplot as plt
f,ax = plt.subplots(1)
ax.plot([1,2,3])
ti=ax.set_title('foo')
ti.set_position(ax.transLimits.transform((0.5,3)))

这将标题置于(0.5,3),如下图所示 enter image description here