pythonseabornbar-chartboxplotviolin-plot

How to center align the plot over the xticks when offset by hue


My boxplot seem not align with the x-tick of the plot. How to make the boxplot align with the x-tick?

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

df = pd.DataFrame([['0', 0.3],['1', 0.5],['2', 0.9],
                   ['0', 0.8],['1', 0.3],['2', 0.4],
                   ['0', 0.4],['1', 0.0],['2', 0.7]])

df.columns = ['label', 'score']

label_list = ['0', '1', '2']

fig = plt.figure(figsize=(8, 5))
g=sns.boxplot(x='label', y='score', data=df, hue='label', hue_order=label_list)
g.legend_.remove()

plt.show()

enter image description here


Solution

  • You can add dodge=False into your boxplot line & that should fix this. That updated code would be as below

    g=sns.boxplot(x='label', y='score', data=df, hue='label', hue_order=label_list, dodge=False)
    

    enter image description here

    You can then play with width to control the width (default width is 0.8) of box plots like below

    g=sns.boxplot(x='label', y='score', data=df, hue='label', hue_order=label_list, dodge=False, width=.2)
    

    enter image description here