pythonmatplotlibseaborn

Seaborn boxplot add annotation labels for max values


I would like to show some values in a Seaborn box plot such as Total# observations, Mean, Mix/Max value for each box plot series. Is there a way to show these in the plot?

import seaborn as sns
import matplotlib.pyplot as plt

sns.set_theme(style="ticks")

# Initialize the figure with a logarithmic x axis
f, ax = plt.subplots(figsize=(7, 6))
ax.set_xscale("log")

# Load the example planets dataset
planets = sns.load_dataset("planets")

# Plot the orbital period with horizontal boxes
sns.boxplot(
    planets, x="distance", y="method", hue="method",
    whis=[0, 100], width=.6, palette="vlag"
)

# Add in points to show each observation
sns.stripplot(planets, x="distance", y="method", size=4, color=".3")

# Tweak the visual presentation
ax.xaxis.grid(True)
ax.set(ylabel="")
sns.despine(trim=True, left=True)

Example output: a


Solution

  • Just use matplotlib text function with the "data coordinates" for x and y:

    mytext = 'Total: XX \n Mean: YY \n Min Value: AA \n Max Value: BB'
    ax.text(x=15000, y='Radial Velocity', 
            s=mytext, style='italic', 
            color='white', bbox = {'facecolor': 'black'}, 
            fontsize=8, verticalalignment='center')
    plt.show()
    

    enter image description here