Mike
Mike

Reputation: 4259

No whitespace between Seaborn barplot bars

I created a Seaborn barplot using the code below (it comes from https://www.machinelearningplus.com/plots/top-50-matplotlib-visualizations-the-master-plots-python/)

I would like all the bars to stack up without whitespace, but have been unable to do so. If I add width it complains about multiple values for width in barh. This is probably as seaborn has its own algo to determine the width. Is there anyway around it?

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# Read data
df = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/email_campaign_funnel.csv")

# Draw Plot
plt.figure(figsize=(13, 10), dpi=80)
group_col = 'Gender'
order_of_bars = df.Stage.unique()[::-1]
colors = [plt.cm.Spectral(i/float(len(df[group_col].unique())-1)) for i in
          range(len(df[group_col].unique()))]

for c, group in zip(colors, df[group_col].unique()):
    sns.barplot(x='Users', y='Stage', data=df.loc[df[group_col]==group, :],
                order=order_of_bars, color=c, label=group)

# Decorations    
plt.xlabel("$Users$")
plt.ylabel("Stage of Purchase")
plt.yticks(fontsize=12)
plt.title("Population Pyramid of the Marketing Funnel", fontsize=22)
plt.legend()
plt.show()

enter image description here

Upvotes: 2

Views: 1097

Answers (1)

BigBen
BigBen

Reputation: 49998

Not a matplotlib expert by any means, so there may be a better way to do this. Perhaps you can do something like the following, which is similar to the approach in this answer:

# Draw Plot
fig, ax = plt.subplots(figsize=(13, 10), dpi=80)
...

for c, group in zip(colors, df[group_col].unique()):
    sns.barplot(x='Users', y='Stage', data=df.loc[df[group_col]==group, :],
                order=order_of_bars, color=c, label=group, ax=ax)

# Adjust height    
for patch in ax.patches:
    current_height = patch.get_height()
    patch.set_height(1)
    patch.set_y(patch.get_y() + current_height - 1)

enter image description here

Upvotes: 4

Related Questions