2015-07-16 9 views
7

Uso di matplotlib, vorrei scrivere il testo sui miei grafici che viene visualizzato in normale notazione scientifica, ad esempio, come 1.92x10 -7 anziché il predefinito 1.92e-7. Ho trovato aiuto su come fare questo per i numeri che etichettano le zecche sugli assi ma non per la funzione di testo. Ecco un esempio del mio codice che vorrei cambiare:Visualizzazione di numeri con "X" anziché "e" notazione scientifica in matplotlib

import numpy as np 
import matplotlib.pyplot as plt 

x = np.linspace(0,0.5) 
y = x*(1.0-x) 

a=1.92e-7 

plt.figure() 
plt.plot(x, y) 
plt.text(0.01, 0.23, r"$a = {0:0.2e}$".format(a), size=20) 
plt.show() 
+1

prima idea sarebbe una funzione di filtro, che trasforma l'uscita del metodo format. E 'già sufficiente, e se no, perché? E in caso contrario: la notazione strettamente scientifica sarebbe un punto centrale anziché una "x" ... – guidot

risposta

8

Un modo un po 'hacky di fare questo è quello di costruire la propria stringa di tex per il numero dalla sua rappresentazione di stringa Python. Passare as_si, definito di seguito, il tuo numero e un certo numero di cifre decimali e produrrà questa stringa tex:

import numpy as np 
import matplotlib.pyplot as plt 

x = np.linspace(0,0.5) 
y = x*(1.0-x) 

def as_si(x, ndp): 
    s = '{x:0.{ndp:d}e}'.format(x=x, ndp=ndp) 
    m, e = s.split('e') 
    return r'{m:s}\times 10^{{{e:d}}}'.format(m=m, e=int(e)) 

a=1.92e-7 

plt.figure() 
plt.plot(x, y) 

plt.text(0.01, 0.23, r"$a = {0:s}$".format(as_si(a,2)), size=20) 
plt.show() 

enter image description here

+0

Questo è meno hacky e più versatile del metodo che ho sviluppato. Tuttavia, non capisco perché siano necessarie 3 parentesi graffe nidificate per formattare l'esponente. Inoltre non capisco perché il suo formato "' (m = m, e = int (e)) '" e non "' format (m, int (e)) '". –

+0

C'è bisogno di una singola coppia di parentesi nell'output di TeX e una singola parentesi letterale si ottiene raddoppiando ('{{' e '}}') in una nuova stringa in stile Python; gli specificatori di formato con nome (parola chiave) sono un'alternativa per elencarli nella funzione 'format'. – xnx

Problemi correlati