2010-06-23 25 views
62

Estoy dibujando un trazado usando matplotlib y python como el código de ejemplo a continuación.gráfico con texto personalizado para los puntos del eje x

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

Como es el código de seguridad en el eje x voy a ver los valores extraídos 0.0, 0.5, 1.0, 1.5 es decir, los mismos valores de mis valores de x de referencia.

¿Hay alguna forma de asignar cada punto de x a una cadena diferente? Entonces, por ejemplo, quiero que el eje x muestre los nombres de meses (cadenas Jun, July,...) u otras cadenas como los nombres de personas ("John", "Arnold", ...) o la hora del reloj ("12:20", "12:21", "12:22", ..).

¿Sabes qué puedo hacer o qué función echarle un vistazo?
Para mi propósito ¿podría ser matplotlib.ticker de ayuda?

Respuesta

117

xticks Puede configurar manualmente (y yticks) utilizando 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

gran hombre !!! ¡Te agradezco mucho! – user311906

+24

'rotation' también es a veces útil:' plt.xticks (rango (5), ["algunos", "palabras", "como", "x", "ticks"], rotación = 45) ' – Adobe

+2

Y cómo ¿dispersar los artículos uniformemente a lo largo del eje x? Digamos que mi eje x tiene 1 millón de puntos internos y quiero mostrar solo John, Arnold, Mavis y Matt a lo largo del eje distribuidos uniformemente. – nottinhill

Cuestiones relacionadas