В настоящее время я использую цветовую карту для раскраски сложенного барплота из кадра данных pandas. Проблема в том, что я хочу сделать несколько участков. (см. рисунки)
В данный момент цветовая карта использует наименьшее и наибольшее значение каждого набора данных для определения цветов. Я хотел бы изменить это следующим образом:
- один и тот же цвет всегда должен представлять одно и то же значение (даже если минимальное значение отличается)
- в идеале я хочу указать их только один раз, а не каждый раз, когда создаю новый сюжет
Есть ли способ взять цвета из цветовой карты и прикрепить их к определенным значениям?
Несколько предыдущих вопросов касались очень похожей темы, например, здесь: Цвет по значениям столбцов в Matplotlib
Ни один из вопросов, которые я нашел, однако не касался барплотов.
Вот мой код:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'DN': [20, 25, 32, 40, 50],
'Fall 1': [200, 300, 450, 200, 80],
'Fall 2': [250, 250, 450, 210, 70],
'Fall 3': [300, 200, 350, 310, 70]})
gesamtlaenge = 200 + 300 + 450 + 200 + 80
df = df.set_index('DN')
df = df.transpose()
# Skalierung auf Maximum:
df = df.divide(gesamtlaenge, axis=0)
df = df.multiply(100, axis=0)
f, b = plt.subplots(figsize=(9, 6))
ax = df.plot(ax=f.gca(),
title='titel',
kind='barh', stacked=True,
colormap='summer_r',
edgecolor='black',
fontsize=14)
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5), fontsize=14)
ax.set_xlabel('Anteil in %', fontsize=14)
ax.set_title('title', fontsize=14)
f.tight_layout()
f.subplots_adjust(right=0.8)
plt.show()
Второй кадр данных, который я использовал:
df = pd.DataFrame({'DN': [25, 32, 40, 50],
'Fall 1': [300, 450, 200, 80],
'Fall 2': [250, 500, 210, 70],
'Fall 3': [200, 350, 310, 170]})