2015-01-24 2 views
7

Я хотел бы знать, как создать гистограмму matplotlib с пороговой линией, часть баров над пороговой линией должна иметь красный цвет, а части ниже пороговой линии должны быть зелеными. Пожалуйста, предоставьте мне простой пример, я ничего не нашел в Интернете.Как создать гистограмму matplotlib с пороговой линией?

ответ

8

Сделайте это сложной гистограммой, как в this example, но разделите свои данные на части выше вашего порога и частей ниже. Пример:

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

Спасибо, но что, если порог не имеет одинаковое значение во всем мире, например, при х <3 порог 50, а при х> = 3 порога 70? Можно ли рисовать диаграмму так же, как я хочу? – alwbtc

+1

Несомненно, просто создайте 'threshold' массив требуемого значения вместо одного значения. Однако вам придется изменить пунктирную линию. – Carsten

Смежные вопросы