12

ich einige große Zahlen mit matplotlib in einem pyqt Programm Plotten mit Python 2.7. Ich habe eine y-Achse, die von 1e + 18 bis 3e + 18 (normalerweise) reicht. Ich würde gerne sehen, dass jedes Häkchen Werte in wissenschaftlicher Schreibweise und mit 2 Dezimalstellen zeigt. Zum Beispiel 2,35e + 18 statt nur 2e + 18, da Werte zwischen 2e + 18 und 3e + 18 für einige wenige Ticks nur noch 2e + 18 lesen. Hier ist ein Beispiel für dieses Problem. Kann ich zeigen Dezimalstellen und wissenschaftliche Schreibweise auf der Achse eines matplotlib Grundstück mit Python 2.7?

import numpy as np 
import matplotlib.pyplot as plt 
fig = plt.figure() 
ax = fig.add_subplot(111) 
x = np.linspace(0, 300, 20) 
y = np.linspace(0,300, 20) 
y = y*1e16 
ax.plot(x,y) 
ax.get_xaxis().set_major_formatter(plt.LogFormatter(10, labelOnlyBase=False)) 
ax.get_yaxis().set_major_formatter(plt.LogFormatter(10, labelOnlyBase=False)) 
plt.show() 
+1

Ähnliche: http://stackoverflow.com/questions/11577665/change-x-axes-scale-in-matplotlib –

Antwort

33

Das ist wirklich einfach zu tun, wenn Sie die matplotlib.ticker.FormatStrFormatter verwenden, wie zum LogFormatter gegenüber. Der folgende Code wird alles mit dem '%.2e' Format beschriften:

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.ticker as mtick 

fig = plt.figure() 

ax = fig.add_subplot(111) 

x = np.linspace(0, 300, 20) 

y = np.linspace(0,300, 20) 
y = y*1e16 

ax.plot(x,y) 

ax.yaxis.set_major_formatter(mtick.FormatStrFormatter('%.2e')) 

plt.show() 

Example plot

+0

Perfect! Vielen Dank! – tempneff