我目前正在制作一个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
(下面的红色圆圈)移动到与其他标签相同的线上? (我意识到这可能会引起对其他值的指数的混淆。)
答案 0 :(得分:1)
首先,您可以查看以下问题:
第一个可能是另一种选择(因为你提到预想的解决方案"可能会引起对指数的混淆")。第二种可能指向一种可能的解决方案,尽管它是关于使用颜色条。
因此,为了将偏移文本的位置更改为与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()