我花了一些時間無果尋找我的問題的答案,所以我認爲一個新的問題是爲了。考慮這個情節:刪除軸刻度
軸標籤用科學記數法。在y軸上,一切都很好。但是,我試過並且未能擺脫Python在右下角添加的縮放因子。我想完全刪除這個因素,並簡單地通過軸標題中的單位來指示它,或者將它乘以每個刻度標籤。一切都會看起來比這個醜陋的1e14
更好。
下面的代碼:
import numpy as np data_a = np.loadtxt('exercise_2a.txt')
import matplotlib as mpl
font = {'family' : 'serif',
'size' : 12}
mpl.rc('font', **font)
import matplotlib.pyplot as plt
fig = plt.figure()
subplot = fig.add_subplot(1,1,1)
subplot.plot(data_a[:,0], data_a[:,1], label='$T(t)$', linewidth=2)
subplot.set_yscale('log')
subplot.set_xlabel("$t[10^{14}s]$",fontsize=14)
subplot.set_ylabel("$T\,[K]$",fontsize=14)
plt.xlim(right=max(data_a [:,0]))
plt.legend(loc='upper right')
plt.savefig('T(t).pdf', bbox_inches='tight')
更新:結合威爾的實施scientificNotation
到我的劇本,劇情現在看起來
的效果好很多,如果你問我。下面是完整的代碼,任何人想要通過它的某些部分:
import numpy as np
data = np.loadtxt('file.txt')
import matplotlib as mpl
font = {'family' : 'serif',
'size' : 16}
mpl.rc('font', **font)
import matplotlib.pyplot as plt
fig = plt.figure()
subplot = fig.add_subplot(1,1,1)
subplot.plot(data[:,0], data[:,1], label='$T(t)$', linewidth=2)
subplot.set_yscale('log')
subplot.set_xlabel("$t[s]$",fontsize=20)
subplot.set_ylabel("$T\,[K]$",fontsize=20)
plt.xlim(right=max(data [:,0]))
plt.legend(loc='upper right')
def scientificNotation(value):
if value == 0:
return '0'
else:
e = np.log10(np.abs(value))
m = np.sign(value) * 10 ** (e - int(e))
return r'${:.0f} \cdot 10^{{{:d}}}$'.format(m, int(e))
formatter = mpl.ticker.FuncFormatter(lambda x, p: scientificNotation(x))
plt.gca().xaxis.set_major_formatter(formatter)
plt.savefig('T(t).pdf', bbox_inches='tight', transparent=True)
感謝您的提示。之前我曾經簡單地嘗試過,並認爲它不起作用,因爲情節消失了,比例因子依然存在。我只是在昨天才開始使用Python,所以我認爲這是從那時起許多語法錯誤之一。但是現在你也提到了它,我再次檢查並意識到它第一次出錯了,因爲我忘記了也要將重調縮放到'put.xlim',如'plt.xlim(right = max(data_a [:,0])/ 1E14)'。 – Casimir
你是否也知道一種方法讓每個刻度標籤中都顯示該因子?這意味着在軸標籤的數量級發生變化的情況下,擺動得少得多。 – Casimir
@Cimimir:是的,你需要設置'formatter'。看到我的回答 – tom