2016-04-07 8 views
0

Ich arbeite an einem Grundstück in python mit der matplot-Bibliothek. Die Zahlen, die ich erzeugen muss, sind sehr groß, also sind auch die Ticks auf den Achsen eine große Zahl und nehmen viel Platz ein. Ich habe versucht, sie als eine Macht zu präsentieren (zum Beispiel anstatt ein Häkchen 100000000 zu haben, möchte ich 10^8 haben). Ich benutzte Befehl: ax.ticklabel_format(style='sci', axis='x', scilimits=(0,4)) aber diese nur etwas geschaffen, wie diesePython Plot: Wie Ticks auf den Achsen als Kräfte bezeichnen?

enter image description here

Gibt es eine andere Lösung haben Ticks für das Grundstück als: 1 x 10^4, 2 x 10^4, etc oder schreiben die Wert 1e4 als 10^4 am Ende der Ticks des Labels?

+0

http://stackoverflow.com/questions/773814/plot-logarithmic-axes-with-matplotlib-in-python –

+0

@MaMing dies ist nicht eine logarithmische Skala, es gerade ist mit wissenschaftliche Schreibweise. – Holloway

Antwort

2

Sie können das Modul matplotlib.ticker verwenden und das ax.xaxis.set_major_formatter auf FuncFormatter einstellen.

Zum Beispiel:

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

plt.rcParams['text.usetex'] = True 

fig,ax = plt.subplots(1) 

x = y = np.arange(0,1.1e4,1e3) 
ax.plot(x,y) 

def myticks(x,pos): 

    if x == 0: return "$0$" 

    exponent = int(np.log10(x)) 
    coeff = x/10**exponent 

    return r"${:2.0f} \times 10^{{ {:2d} }}$".format(coeff,exponent) 

ax.xaxis.set_major_formatter(ticker.FuncFormatter(myticks)) 

plt.show() 

enter image description here

Hinweis verwendet diese LaTeX Formatierung (text.usetex = True) Exponenten in den Strichbeschriftungen zu machen. Beachten Sie auch die doppelten Klammern, die erforderlich sind, um die LaTeX-Klammern von den Python-Format-Zeichenfolge-Klammern zu unterscheiden.

Verwandte Themen