Matplotlib:获取轴的轴偏移文本

2024-04-26 01:16:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试更改matplotlib中轴偏移的位置。看起来,如果符号是一个轴的一部分,你就不能改变科学符号在该轴上的位置。也就是说,如果符号是从X(Y)轴开始的,则不能在X(Y)方向上移动它

为了克服这个限制,我尝试获取轴的轴偏移文本/值,关闭科学记数法,并手动将其添加回我首选的位置

但问题是,我无法从轴获取轴偏移文本/值,当我尝试通过轴的get_offset_text方法访问它时,我获取了位置,但文本为空

以下脚本将说明此问题:

import numpy as np
import matplotlib.pyplot as plt

x=np.arange(1, 100)
y=x*1e10

fig=plt.figure()
ax=fig.add_subplot(111)

ax.plot(x, y)
sci=ax.yaxis.get_offset_text()
print('Before savefig:',sci)

fig.savefig('mpl_sci.png', dpi=500)

sci=ax.yaxis.get_offset_text()
print('After savefig:',sci)

输出为:

Before savefig: Text(0, 0.5, '')
After savefig: Text(0, 426.56666666666666, '1e12')

在保存图形之前,请先查看“科学记数法”文本是如何为空的。我认为它仅在绘制图形时生成。
请参见下图:
enter image description here
我想要1e12文本,它是Y轴偏移量(顶部脊椎的左上角)ax.yaxis.get_offset_text()方法应该得到它,但它给了我一个空字符串,如示例脚本所示

是否有办法在保存图形之前获取科学符号文本

更新1:显然,有几个人误解了我的问题,因此被当作重复问题关闭了。我最初的目标是在任何方向上自由移动轴偏移文本,但有几个问题表明这是不可能的(在我的问题中解释)。
这个问题是关于获取轴的轴偏移量,这样我就可以使用axes.text方法将其放置在我想要的任何位置

更新2:我找到了一个解决方案/解决方法,可以在保存图形之前获取轴偏移值/文本。只需在访问轴偏移之前调用图形的tight_layout。如下图所示:

ax.plot(x, y)
fig.tight_layout()
sci=ax.yaxis.get_major_formatter().get_offset()  

输出为:

Before savefig: 1e12
After savefig: 1e12  

这让我很满意


Tags: 方法text文本图形getfig符号科学