我如何根据 seaborn 的值更改 barplot 中每个条形图的不透明度?
How can I change the opacity of my each bar in barplot by their values seaborn?
我有一个这样的数据框,其中我通过 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 的 alpha 值设置为对应的 alpha 值?
我通过 MinMaxScaler 创建了 alpha 值列并缩放了 (0.1,1) 之间的计数
因此,最少计数栏的不透明度为 0.1,反之亦然。
要更改条形图的 alpha,您需要显式循环生成的条形图并更改它们的 alpha。为确保条形以与数据框中相同的顺序出现,应设置 order=
参数。
在下面的示例中,darkred
用于条形,以便更好地查看 alpha 的差异。
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()
我有一个这样的数据框,其中我通过 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 的 alpha 值设置为对应的 alpha 值? 我通过 MinMaxScaler 创建了 alpha 值列并缩放了 (0.1,1) 之间的计数 因此,最少计数栏的不透明度为 0.1,反之亦然。
要更改条形图的 alpha,您需要显式循环生成的条形图并更改它们的 alpha。为确保条形以与数据框中相同的顺序出现,应设置 order=
参数。
在下面的示例中,darkred
用于条形,以便更好地查看 alpha 的差异。
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()