在Python中提取子图坐标

时间:2013-05-17 11:35:00

标签: python python-2.7 matplotlib

我是Python的新手,我实际上是想在子图上绘制一个数字。

困难的是我需要axis属性,这是一个我可以通过简单地打印子图获得的字符串(例如下面的例子)。

figure(1)
a = subplot(222)
print a
Axes(xpos,ypos;deltaxxdeltay)

这个字符串包含了我想要做的所有信息(一个简单的轴([x,y,deltax,deltay])。但不幸的是,我需要将print()的输出重定向到一个变量我可以解析(用re())。

有没有人知道怎么做(我只需要输出这个字符串,程序中的其他打印值不得受到影响)?

1 个答案:

答案 0 :(得分:2)

您可以直接访问该信息,而不是通过字符串,我认为这更清晰:

>>> print a
Axes(0.547727,0.536364;0.352273x0.363636)
>>> a._position.bounds
(0.54772727272727262, 0.53636363636363638, 0.35227272727272729, 0.36363636363636365)
>>> a._position.bounds[3]
0.36363636363636365

虽然如果你愿意,你可以使用字符串:

>>> str(a)
'Axes(0.547727,0.536364;0.352273x0.363636)'
>>> str(a)[5:-1]
'0.547727,0.536364;0.352273x0.363636'

我使用IPython解释器,因此通过查看a.__str__的来源很容易找出信息的来源:

>>> a.__str__??
Type:       instancemethod
String Form:<bound method AxesSubplot.__str__ of <matplotlib.axes.AxesSubplot object at 0x103e187d0>>
File:       /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/axes.py
Definition: a.__str__(self)
Source:
    def __str__(self):
        return "Axes(%g,%g;%gx%g)" % tuple(self._position.bounds)