¿Cómo establecer la unidad de longitud del eje en matplotlib?

Por ejemplo x = [1~180,000] Cuando lo trazo, en el eje x, muestra: 1, 20,000, 40,000, ... 180,000 estos 0 son realmente molestos

¿Cómo puedo cambiar la longitud de la unidad 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 que haga eso en matplotlib?

preguntado el 22 de mayo de 12 a las 15:05

2 Respuestas

Si su objetivo es hacer cifras de calidad de publicación, querrá tener un control preciso sobre las etiquetas de los ejes. Una forma de hacerlo es 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

contestado el 22 de mayo de 12 a las 16:05

Puede usar el pyplot.ticklabel_format para establecer el estilo de la etiqueta en 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()

Salida

contestado el 23 de mayo de 12 a las 08:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.