2012-06-26 11 views
8

Ecco un esempio di rappresentazione grafica di valori elevati.Impostazione automatica dei limiti dell'asse y per il grafico a barre mediante matplotlib

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

L'asse y inizia da 0, quindi le barre sembrano tutte uguali. So che puoi usare plt.ylim per impostare manualmente i limiti, ma esiste un modo per matplotlib di impostare automaticamente (e in modo intelligente) i limiti su valori ragionevoli (come 998-1008), e forse anche mostrare un break sull'asse?

risposta

11

Un po 'di algebra semplice vi aiuterà fissare i limiti:

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() 

In questo modo, si è in grado di calcolare la differenza tra i tuoi valori y e li usa per impostare la scala lungo il y- asse. Ho usato math.ceil (al contrario di math.floor) per ottenere i valori specificati e garantire gli interi.

Per quanto riguarda l'interruzione di un asse, suggerirei di cercare su this example.

+0

Sì, funziona abbastanza bene. Grazie. – user1473483

Problemi correlati