Bullet Graph — это компактный и информативный способ отображения ключевых показателей (KPI) или текущих результатов в сравнении с целевыми показателями или другими референсными значениями. Этот тип визуализации был разработан Стивеном Фью (Stephen Few) как альтернатива традиционным термометрам и линейным графикам прогресса, предоставляя одновременно информацию о текущем достижении, сравнительном контексте (например, целевых или прошлых значениях) и квалификаторах эффективности (как правило, отображаемых через разные оттенки или цвета).
Bullet Graph состоит из нескольких основных компонентов:
- Основная мера (обычно текущий показатель или KPI),
- Сравнительная мера (например, целевое значение),
- Качественные диапазоны (различные уровни производительности, отображаемые цветами или оттенками).
В следующем примере мы создадим простой Bullet Graph, который отображает текущее значение, цель и три качественных диапазона производительности.
Для начала импортируем необходимые библиотеки:
import matplotlib.pyplot as plt
import numpy as np
Создадим функцию отрисовки графика:
def draw_bullet_graph(current_value, target, ranges, labels=None, figsize=(8, 3)):
fig, ax = plt.subplots(figsize=figsize)
# Качественные диапазоны
for i, range_val in enumerate(ranges):
ax.broken_barh([(0, range_val)], (i, 0.5), facecolors=('red', 'yellow', 'green')[i])
# Текущее значение
ax.broken_barh([(0, current_value)], (len(ranges), 0.5), facecolors='blue')
# Целевое значение
ax.plot([target, target], [0, len(ranges)], 'k--', linewidth=2)
ax.set_yticks(np.arange(len(ranges) + 1) + 0.25)
if labels:
ax.set_yticklabels(labels + ['Current'])
ax.set_xticks([])
ax.set_xlim(0, max(ranges + [current_value, target]) * 1.1)
plt.show()
Создадим игрушечные данные:
current_value = 75
target = 90
ranges = [50, 75, 100] # Например, плохо, удовлетворительно, хорошо
labels = ['Low', 'Medium', 'High']
Отрисуем график:
draw_bullet_graph(current_value, target, ranges, labels)
Ноутбук, не требующий дополнительной настройки на момент написания статьи, можно скачать здесь.
© Лена Капаца. Все права защищены.