Jak zapobiec zmianie liczb na postać wykładniczą w Pythonie
Używam Matplotlib w Pythonie do rysowania prostych zestawów danych x-y. Daje to ładnie wyglądające wykresy, chociaż gdy "przybliżę" zbyt blisko różne sekcje wykresu za pomocą widoku rysunku (który pojawia się podczas wykonywania plt.show()
), wartości osi x zmieniają się ze standardowego formularza liczbowego (1050, 1060, 1070 itd.)do postaci naukowej z notacją wykładniczą (np. 1, 1,5, 2,0 z oznaczeniem osi x podanym jako +1.057e3
).
Wolałbym, aby moje figury zachowały prostą numerację osi, zamiast używać wykładniczej formy. Czy mogę zmusić Matplotliba do tego?
3 answers
Formatowanie etykiet kleszczy jest kontrolowane przez obiekt Formatter
, który zakładając, że nie zrobiłeś nic wymyślnego, będzie ScalerFormatter
domyślnie . Ten formater użyje stałego przesunięcia, jeśli ułamkowa zmiana widocznych wartości jest bardzo mała. Aby tego uniknąć, po prostu go wyłącz:
plt.plot(arange(0,100,10) + 1000, arange(0,100,10))
ax = plt.gca()
ax.get_xaxis().get_major_formatter().set_useOffset(False)
plt.draw()
Jeśli chcesz uniknąć notacji naukowej w ogóle,
ax.get_xaxis().get_major_formatter().set_scientific(False)
Może to kontrolować globalnie za pomocą axes.formatter.useoffset
rcparam.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-15 16:18:41
Możesz użyć prostszego polecenia, aby go wyłączyć:
plt.ticklabel_format(useOffset=False)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-05 12:15:07
Możesz użyć czegoś w rodzaju:
from matplotlib.ticker import ScalarFormatter, FormatStrFormatter
ax.xaxis.set_major_formatter(FormatStrFormatter('%.0f'))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-23 14:54:00