Spędziłem trochę czasu bezowocnie szukając odpowiedzi na moje pytanie, więc myślę, że nowe pytanie jest w porządku. Rozważmy następujący wykres:Usuń skalę osi
osiach etykiety użyć notacji naukowej. Na osi Y wszystko jest w porządku. Jednak próbowałem i nie udało mi się pozbyć współczynnika skalowania dodanego przez Python w prawym dolnym rogu. Chciałbym całkowicie usunąć ten czynnik i po prostu wskazać go przez jednostki w tytule osi lub pomnożyć je do każdej etykiety. Wszystko będzie wyglądać lepiej niż ten brzydki 1e14
.
Oto kod:
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')
Aktualizacja: realizacja włączenie Will of scientificNotation
do mojego scenariusza, fabuła teraz wygląda
wiele lepsze jeśli chodzi o mnie. Poniżej znajduje się pełny kod dla każdego, kto chce przyjąć pewną jego część:
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)
Dzięki za cynk. Próbowałem to wcześniej i uważałem, że nie zadziałało, ponieważ wątek zniknął, a współczynnik skali pozostał. Zacząłem używać Pythona tylko wczoraj, więc założyłem, że był to jeden z wielu błędów składniowych popełnionych od tego czasu. Ale teraz, kiedy już to zrobiłeś, sprawdziłem ponownie i zdałem sobie sprawę, że za pierwszym razem poszło nie tak, ponieważ zapomniałem również dodać przeskalowanie do 'put.xlim', jak w' plt.xlim (right = max (data_a [:, 0])/1e14) '. – Casimir
Czy znasz również sposób, aby czynnik pojawiał się na każdej etykiecie? Oznaczałoby to o wiele mniej błądzenia w przypadku zmiany kolejności znaczników osi. – Casimir
@asimimir: tak, musisz ustawić "formatter". Zobacz moją odpowiedź – tom