2015-01-24 13 views
7

Mi piacerebbe sapere come creare un grafico a barre matplotlib con una linea di soglia, la parte di barre sopra la linea di soglia dovrebbe avere il colore rosso e le parti al di sotto della linea di soglia dovrebbero essere verdi. Per favore forniscimi un semplice esempio, non sono riuscito a trovare nulla sul web.Come creare un grafico a barre matplotlib con una linea di soglia?

risposta

8

Crea un grafico a barre in pila, come in this example, ma dividi i dati nelle parti sopra la soglia e le parti sottostanti. Esempio:

import numpy as np 
import matplotlib.pyplot as plt 

# some example data 
threshold = 43.0 
values = np.array([30., 87.3, 99.9, 3.33, 50.0]) 
x = range(len(values)) 

# split it up 
above_threshold = np.maximum(values - threshold, 0) 
below_threshold = np.minimum(values, threshold) 

# and plot it 
fig, ax = plt.subplots() 
ax.bar(x, below_threshold, 0.35, color="g") 
ax.bar(x, above_threshold, 0.35, color="r", 
     bottom=below_threshold) 

# horizontal line indicating the threshold 
ax.plot([0., 4.5], [threshold, threshold], "k--") 

fig.savefig("look-ma_a-threshold-plot.png") 

Example plot showing the result of the code

+0

Grazie, ma cosa succede se la soglia non ha lo stesso valore in tutto il mondo, ad esempio per x <3 soglia è 50, e per x> = 3 soglia è 70? È possibile disegnare il grafico nello stesso modo in cui voglio? – alwbtc

+1

Certo, basta rendere 'threshold' una matrice del valore desiderato, invece di un singolo valore. Dovresti cambiare la linea tratteggiata, comunque. – Carsten

Problemi correlati