绘图不会突出显示由色调表示的列的所有唯一值

Plot does not highlight all the unique values of a column represented by hue

我的数据框有一列 'rideable_type',它有 3 个唯一值: 1.classic_bike 2.docked_bike 3.electric_bike

使用以下代码绘制条形图时:

g = sns.FacetGrid(electric_casual_type_week, col='member_casual', hue='rideable_type', height=7, aspect=0.65)
g.map(sns.barplot, 'day_of_week', 'number_of_rides').add_legend()

我只得到一个显示 2 个唯一 'rideable_type' 值的图。

剧情如下:

如您所见,只有 'electric_bike' 和 'classic_bike' 可见,而没有 'docked_bike'。

主要问题是所有的条都是在彼此之上绘制的。 Seaborn 的条形图不容易支持堆叠条形图。此外,这种创建条形图的方式不支持默认的“躲避”(barplot 为每个 hue 值单独调用,而需要一次调用它才能使躲避工作).

因此,推荐的方法是使用 catplot,一种用于分类图的特殊版本 FacetGrid

g = sns.catplot(kind='bar', data=electric_casual_type_week, x='day_of_week', y='number_of_rides',
                col='member_casual', hue='rideable_type', height=7, aspect=0.65)

这是一个使用 Seaborn 的 'tips' 数据集的示例:

import seaborn as sns

tips = sns.load_dataset('tips')

g = sns.FacetGrid(data=tips, col='time', hue='sex', height=7, aspect=0.65)
g.map_dataframe(sns.barplot, x='day', y='total_bill')
g.add_legend()

sns.catplot比较时,重合的柱线清晰:

g = sns.catplot(kind='bar', data=tips, x='day', y='total_bill', col='time', hue='sex', height=7, aspect=0.65)