У меня есть список, содержащий названия различных методов и их производительность в тестовом наборе, которые я хочу показать с помощью гистограммы. Ну, на самом деле я хотел бы нарисовать их относительное улучшение / ухудшение по отношению к базовой модели. Итак, данные выглядят так:
system_1,+2.5
system_2,-0.8
system_3,+0.24
Я пробовал гистограмму в Seaborn, которая дает мне простую гистограмму с фиксированным цветом. Но то, что я ищу, это гистограмма, в которой цвета находятся в диапазоне red, white, green
, где красный соответствует data['score'].min()
, белый соответствует 0
, а зеленый представляет data['score'].max()
. Мне бы хотелось, чтобы темнота / яркость цветов показывали их расстояние от 0, а это означает, что темно-красный цвет показывает наихудшую систему, а темно-зеленый цвет показывает наиболее эффективную систему, а все характеристики в середине показаны более светлыми цветами.
Я нашел несколько решений для создания градиентных цветов, но они не делают то, что я ожидаю. Вот мой код и диаграмма, которую я получаю.
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
import sys
import numpy as np
sns.set(style="whitegrid", color_codes=True)
data = pd.read_csv(sys.argv[1])
pal = sns.color_palette("Greens_d", len(data))
colors = [0 if c >=0 else 1 for c in data['performance']]
ax = sns.barplot(x="performance", y="System", data=data, palette=pal)
plt.tight_layout()
plt.show()
Как видите, вместо создания цветового диапазона в зависимости от значения точки данных, которые он меняет цвета, основаны на индексах точек данных. У вас есть идеи по этому поводу?
Большое спасибо!