2010-06-23 9 views
62

Sto disegnando un grafico usando matplotlib e python come il seguente codice di esempio.trama con testo personalizzato per i punti dell'asse x

x = array([0,1,2,3]) 
y = array([20,21,22,23]) 
plot(x,y) 
show() 

Come nel codice precedente sull'asse x vedrò valori prelevate 0.0, 0.5, 1.0, 1.5 cioè gli stessi valori dei miei valori x riferimento.

Esiste comunque la possibilità di mappare ciascun punto di x su una stringa diversa? Quindi, ad esempio, desidero che l'asse x mostri i nomi dei mesi (stringhe Jun, July,...) o altre stringhe come i nomi delle persone ("John", "Arnold", ...) o l'ora dell'orologio ("12:20", "12:21", "12:22", ..).

Sai cosa posso fare o quale funzione dare un'occhiata?
Per il mio scopo potrebbe essere matplotlib.ticker di aiuto?

risposta

117

xticks È possibile impostare manualmente (e yticks) utilizzando pylab.xticks:

import matplotlib.pyplot as plt 
import numpy as np 

x = np.array([0,1,2,3]) 
y = np.array([20,21,22,23]) 
my_xticks = ['John','Arnold','Mavis','Matt'] 
plt.xticks(x, my_xticks) 
plt.plot(x, y) 
plt.show() 

+1

grande uomo !!! Ti ringrazio molto! – user311906

+24

'rotation' è a volte utile:' plt.xticks (range (5), ["some", "words", "as", "x", "ticks"], rotazione = 45) ' – Adobe

+2

E come disperdere gli oggetti uniformemente lungo l'asse x? Diciamo che il mio asse x ha 1 milione di punti internamente e voglio mostrare solo John, Arnold, Mavis e Matt lungo l'asse equamente distribuiti? – nottinhill

Problemi correlati