2012-05-22 76 views
8

Por ejemplo, x = [1 ~ 180000] Cuando trazo que, en el eje X, que muestra: 1, 20.000, 40.000, 180.000 ... estos 0s son realmente molesto¿Cómo establecer la longitud de la unidad del eje en matplotlib?

¿Cómo puedo cambiar la unidad longitud del eje x a 1000, para que muestre: 1, 20, 40, ... 180 y también muestre que en algún lugar su unidad está en 1000.

Sé que puedo hacer una transformación lineal yo mismo. Pero, ¿no hay una función haciendo eso en matplotlib?

Respuesta

6

Si pretende obtener cifras de calidad de publicación, querrá un control fino sobre las etiquetas de los ejes. Una forma de hacer esto es para extraer el texto de la etiqueta y aplicar su propio formato personalizado:

import pylab as plt 
import numpy as np 

# Create some random data over a large interval 
N = 200 
X = np.random.random(N) * 10 ** 6 
Y = np.sqrt(X) 

# Draw the figure to get the current axes text 
fig, ax = plt.subplots() 
plt.scatter(X,Y) 
ax.axis('tight') 
plt.draw() 

# Edit the text to your liking 
label_text = [r"$%i \cdot 10^4$" % int(loc/10**4) for loc in plt.xticks()[0]] 
ax.set_xticklabels(label_text) 

# Show the figure 
plt.show() 

enter image description here

3

Usted puede utilizar pyplot.ticklabel_format para establecer el estilo de etiqueta a la notación científica.

import pylab as plt 
import numpy as np 

# Create some random data over a large interval 
N = 200 
X = np.random.random(N) * 10 ** 6 
Y = np.sqrt(X) 

# Draw the figure to get the current axes text 
fig, ax = plt.subplots() 
plt.scatter(X,Y) 
ax.axis('tight') 
plt.draw() 

plt.ticklabel_format(style='sci',axis='x',scilimits=(0,0)) 

# Edit the text to your liking 
#label_text = [r"$%i \cdot 10^4$" % int(loc/10**4) for loc in plt.xticks()[0]] 
#ax.set_xticklabels(label_text) 

# Show the figure 
plt.show() 

Output

Cuestiones relacionadas