2012-06-26 24 views
8

Aquí hay un ejemplo de gráficos de valores grandes.Establecer automáticamente los límites del eje y para el gráfico de barras con matplotlib

import matplotlib.pyplot as plt 
x = [1,2,3,4,5] 
y = [1000, 1002, 1001, 1003, 1005] 
plt.bar(x,y) 
plt.show() 

El eje y comienza en 0, por lo que todas las barras tienen el mismo aspecto. Sé que puede usar plt.ylim para establecer manualmente los límites, pero ¿hay alguna manera para que matplotlib establezca de forma automática (e inteligente) los límites a valores razonables (como 998-1008), y también quizás muestre un salto de eje?

Respuesta

11

Un poco de álgebra simple ayudará a fijar los límites:

import matplotlib.pyplot as plt 
import math 
x = [1,2,3,4,5] 
y = [1000, 1002, 1001, 1003, 1005] 
low = min(y) 
high = max(y) 
plt.ylim([math.ceil(low-0.5*(high-low)), math.ceil(high+0.5*(high-low))]) 
plt.bar(x,y) 
plt.show() 

De esta manera, usted es capaz de encontrar la diferencia entre los valores de y y utilizarlos para establecer la escala a lo largo del Y- eje. Usé math.ceil (a diferencia de math.floor) para obtener los valores que especificó y asegurar enteros.

Por lo que se refiere a un salto de eje, sugiero mirar this example.

+0

Sí, esto funciona bastante bien. Gracias. – user1473483

Cuestiones relacionadas