I have a plot that has categories and subcategories. I want to plot it such that it is not stacked, but I want categories to not show up when their value is not present.
Below you can find sample code and a picture of what I am trying to do. On the picture you can see the place of B in X and C in Y. I want those to not be there. How do I do that?
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')
Unfortunately I didn't find the exact answer to your question but, here is a workaround:
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()
the result would looks like this: