2012-08-07 13 views
22

Quando provo a eseguire un grafico su un intervallo con numeri abbastanza grandi ottengo un asse con uno spostamento relativo per tutti i segni di graduazione. Per esempio:Come rimuovere lo spostamento relativo nell'asse matplotlib

plot([1000, 1001, 1002], [1, 2, 3]) 

ricevo queste zecche sull'asse delle ascisse:

0.0  0.5  1.0  1.5  2.0 
           +1e3 

La domanda è: come rimuovere +1e3 e ottenere solo:

1000.0 1000.5 1001.0 1001.5 1002.0 

risposta

25
plot([1000, 1001, 1002], [1, 2, 3]) 
gca().get_xaxis().get_major_formatter().set_useOffset(False) 
draw() 

Questa afferra la corrente axes, ottiene l'oggetto x23 axis e quindi il principale oggetto formattatore un d imposta useOffset su false (doc).

Nelle versioni più recenti (1.4+) di matplotlib il comportamento predefinito può essere modificato tramite il parametro axes.formatter.useoffset rcparam.

+0

Grazie, funziona. –

2

Per disabilitare relativo spostamento in tutto il mondo, impostare il parametro rc:

import matplotlib 
matplotlib.rc('axes.formatter', useoffset=False) 
+1

Forse dovresti aggiungere qualche spiegazione alla tua risposta, quindi non è solo un codice. – khelwood

+0

Anche se questo snippet di codice può risolvere la domanda, [compresa una spiegazione] (http://meta.stackexchange.com/questions/114762/explaining-entally-code-based-answers) aiuta davvero a migliorare la qualità del tuo post. Ricorda che stai rispondendo alla domanda per i lettori in futuro, e queste persone potrebbero non conoscere le ragioni del tuo suggerimento sul codice. – bahrep

+0

Aggiornato per aggiungere una spiegazione. – zbyszek

Problemi correlati