Метка оси Matplotlib перемещает научный показатель в ту же строку

В настоящее время я создаю график, который по оси 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 (обведено красным ниже) на ту же строку, что и другие метки? (Я понимаю, что это может вызвать путаницу в отношении показателей других значений.)

вывод процедуры построения графика, показывающий местоположение маркера научного показателя


person P-M    schedule 19.11.2017    source источник


Ответы (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()

введите здесь описание изображения

person ImportanceOfBeingErnest    schedule 19.11.2017