我正在寻找一种方法来改变使用科学计数法时指数在轴上的位置。我已经在这个问题上卡住了几次。我已经知道默认格式化程序是ScalarFormatter
,但它没有选择以某种方式访问指数。
有一个workaround,但我不喜欢它,因为它也操作现有的ticklabels。到目前为止,我发现,如果使用科学计数法,由axes的get_xmajorticklabels()
方法返回的列表包含多一个文本对象。例如:
import matplotlib.pyplot as plt
import numpy as np
fig= plt.figure(figsize = plt.figaspect(0.5))
ax1= fig.add_subplot(121)
ax1.plot(np.arange(146), np.random.rand(146))
print(ax1.get_xmajorticklabels())
ax2= fig.add_subplot(122)
ax2.plot(np.arange(146)*1e-6, np.random.rand(146))
print(ax2.get_xmajorticklabels())
印刷品给予:所以我认为额外的列表项可以是指数的文本对象,但是当我打印文本的时候它是空的。
有没有办法把这个指数作为一个文本对象来访问?那么应该可以设置它的位置,不是吗?
2条答案
按热度按时间oxiaedzo1#
要访问Text对象列表,可以使用该类的方法,例如
get_text()
:然而,这样做的结果是,
运行
fig.tight_layout()
后,现在可以枚举这些Text xticklabel objects
的输出:对于像
-7
这样的指数,两个列表中实际上有相同数量的对象。我找到的最接近的定位标签的方法是detailed here by Scott。遗憾的是,它只能水平地定位x轴,垂直地定位y轴,所以你不能在图上任意地定位标签。
flvtvl502#
我的解决方法是这样的: