#python #matplotlib #seaborn #bar-chart #opacity
#питон #matplotlib #seaborn #гистограмма #непрозрачность
Вопрос:
У меня есть фрейм данных, подобный этому, в котором я создал barplot от seaborn
sns.barplot(x='year', y='counts', data=df, color='red', alpha=df_alpha.alpha)
df.head()
year counts alpha
0 2014 16908 1.000000
1 2015 14977 0.894269
2 2016 13626 0.820296
3 2013 12041 0.733510
4 2017 10980 0.675415
Как я могу установить альфа-значения df в качестве соответствующих альфа-значений?
Я создал столбец альфа-значений с помощью MinMaxScaler и масштабировал значения между (0.1, 1)
Следовательно, наименьшая полоса отсчета будет иметь непрозрачность 0,1 и наоборот.
Ответ №1:
Чтобы изменить альфа-значение столбцов, вам нужно явно перебрать сгенерированные столбцы и изменить их альфа-значение. Чтобы убедиться, что столбцы расположены в том же порядке, что и в фрейме данных, этот order=
параметр должен быть установлен.
В приведенном ниже примере darkred
используется для столбцов, чтобы лучше видеть различия в альфа-формате.
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
from io import StringIO
df_str = ''' year counts alpha
0 2014 16908 1.000000
1 2015 14977 0.894269
2 2016 13626 0.820296
3 2013 12041 0.733510
4 2017 10980 0.675415'''
df = pd.read_csv(StringIO(df_str), delim_whitespace=True)
ax = sns.barplot(x='year', y='counts', data=df, color='darkred', order=df['year'])
for bar, alpha in zip(ax.containers[0], df['alpha']):
bar.set_alpha(alpha)
plt.show()
Комментарии:
1. Я подошел к совершенно другой концепции. Я создал набор цветов rgb для каждого бара, а затем проанализировал его как аргумент цвета, тупой я! Я принял ваш ответ