Как я могу изменить непрозрачность каждого моего столбца в barplot на их значения seaborn?

#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 для каждого бара, а затем проанализировал его как аргумент цвета, тупой я! Я принял ваш ответ