使用 hvplot 时如何删除 Bokeh 中的空类别?

amb*_*rok 1 python pandas bokeh jupyter hvplot

我有一个包含类别和子类别的图。我想绘制它,使其不堆叠,但我希望类别在其值不存在时不显示。

您可以在下面找到示例代码和我正在尝试做的事情的图片。在图片上,您可以看到 X 中 B 的位置和 Y 中 C 的位置。我希望它们不在那里。我怎么做?

import pandas as pd
import hvplot.pandas

df = pd.DataFrame({
    'category': ['A', 'A', 'B', 'B', 'C', 'C'],
    'subcategory': ['X', 'Y', 'X', 'Y', 'X', 'Y'],
    'value': [10, 20, 0, 30, 40, 0]
})

df_filtered = df[df['value'] != 0]

grouped = df_filtered.groupby(['category', 'subcategory']).sum()

grouped.hvplot.bar(stacked=False, by='category')
Run Code Online (Sandbox Code Playgroud)

错误的情节

小智 10

不幸的是,我没有找到您问题的确切答案,但是,这里有一个解决方法:


    import seaborn as sns
    import matplotlib.pyplot as plt
    g = sns.catplot(kind='bar', data=df_filtered, col='subcategory', x='category', y='value',
                hue='category', palette='rocket', dodge=False, sharex=False)
    plt.tight_layout()
    plt.show()

Run Code Online (Sandbox Code Playgroud)

结果看起来像这样:

在此输入图像描述