2013-06-25 16 views
5

Ho un numero nel mio script python che voglio usare come parte del titolo di una trama in matplotlib. Esiste una funzione che converte un float in una stringa TeX formattata?Come posso formattare un float usando il formattatore LaTeX di matplotlib?

In sostanza,

str(myFloat) 

rendimenti

3.5e+20 

ma voglio

$3.5 \times 10^{20}$ 

o almeno per matplotlib per formattare il galleggiante come la seconda stringa verrebbe formattato. Sono anche bloccato usando python 2.4, quindi il codice che viene eseguito nelle vecchie versioni è particolarmente apprezzato.

risposta

4

Si può fare qualcosa di simile:

ax.set_title("${0} \\times 10^{{{1}}}$".format('3.5','+20')) 

nel vecchio stile:

ax.set_title("$%s \\times 10^{%s}$" % ('3.5','+20')) 
+0

Avete qualche alternativa per le vecchie versioni di Python? Sono bloccato usando 2.4, ma string.format() è nuovo in 2.6. – Dan

+0

ok ... l'ho aggiunto! Le doppie barre posteriori sono importanti per interpretare '\ times' correttamente in matplotlib ... –

8

con i vecchi formattazione stype:

print r'$%s \times 10^{%s}$' % tuple('3.5e+20'.split('e+')) 

con nuovo formato:

print r'${} \times 10^{{{}}}$'.format(*'3.5e+20'.split('e+'))