2017-11-19 15 views
1

현재 x 축에서 0에서 1.3e7 범위의 플롯을 생성 중입니다. 나는 이것을 다음과 같이 플롯합니다 :Matplotlib 축 레이블 과학 지수를 같은 줄로 이동

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 (아래에서 빨간색으로 동그라미가있는)을 움직일 수 있는지 궁금합니다. (나는이 다른 값의 지수에 대한 혼란을 일으킬 수 있습니다 알고 있습니다.)

output of plot routine showing location of scientific exponent marker

답변

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() 

enter image description here