我目前正在制作一个 x 轴范围从 0 到 1.3e7 的图。我将其绘制如下:
plt.errorbar(num_vertices,sampled_ave_path_average,yerr=sampled_ave_path_stdev,fmt='.',markersize='1',capsize=2,capthick=2)
plt.xlabel('Number of vertices')
plt.ylabel('Average shortest path length')
plt.xlim(0,1.3*10**7)
plt.savefig('path_length_vs_N.eps', bbox_inches='tight')
plt.savefig('path_length_vs_N.png', bbox_inches='tight')
plt.close()
这会生成一个图,其中 x 轴刻度标签采用科学记数法,这正是我想要的。然而我想知道是否可以移动1e7
(下面用红色圈出的部分)与其他标签在同一行吗? (我意识到这可能会导致对其他值的指数的混淆。)
首先,你可以看看以下问题:
- 如何将y轴比例因子移动到y轴标签旁边的位置?
- 颜色条偏移文本(科学基础乘数)从颜色条的顶部移动到底部
第一个可能是一个可能的替代方案(因为您提到设想的解决方案“可能会导致指数混乱”)。第二个可能指出一种可能的解决方案,尽管它是关于使用颜色条。
因此,为了将偏移文本的位置更改为与 xtick 标签一致,可以采用以下方法。
import matplotlib.pyplot as plt
import numpy as np
import types
x = np.linspace(1e7, 9e7)
y = 1-np.exp(-np.linspace(0,5))
fig, ax = plt.subplots()
ax.plot(x,y)
pad = plt.rcParams["xtick.major.size"] + plt.rcParams["xtick.major.pad"]
def bottom_offset(self, bboxes, bboxes2):
bottom = self.axes.bbox.ymin
self.offsetText.set(va="top", ha="left")
oy = bottom - pad * self.figure.dpi / 72.0
self.offsetText.set_position((1, oy))
ax.xaxis._update_offset_text_position = types.MethodType(bottom_offset, ax.xaxis)
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)