Home » How to Show Values on Seaborn Barplot (With Examples)

How to Show Values on Seaborn Barplot (With Examples)

by Erma Khan

You can use the following function to display the values on a seaborn barplot:

def show_values(axs, orient="v", space=.01):
    def _single(ax):
        if orient == "v":
            for p in ax.patches:
                _x = p.get_x() + p.get_width() / 2
                _y = p.get_y() + p.get_height() + (p.get_height()*0.01)
                value = '{:.1f}'.format(p.get_height())
                ax.text(_x, _y, value, ha="center") 
        elif orient == "h":
            for p in ax.patches:
                _x = p.get_x() + p.get_width() + float(space)
                _y = p.get_y() + p.get_height() - (p.get_height()*0.5)
                value = '{:.1f}'.format(p.get_width())
                ax.text(_x, _y, value, ha="left")

    if isinstance(axs, np.ndarray):
        for idx, ax in np.ndenumerate(axs):
            _single(ax)
    else:
        _single(axs)

This function works for both horizontal and vertical barplots.

The following examples show how to use this function in practice with the built-in seaborn “tips” dataset:

import seaborn as sns
import pandas as pd
import numpy as np

#load tips dataset
data = sns.load_dataset("tips")

#view first five rows
data.head()

	total_bill	tip	sex	smoker	day	time	size
0	16.99	        1.01	Female	No	Sun	Dinner	2
1	10.34	        1.66	Male	No	Sun	Dinner	3
2	21.01	        3.50	Male	No	Sun	Dinner	3
3	23.68	        3.31	Male	No	Sun	Dinner	2
4	24.59	        3.61	Female	No	Sun	Dinner	4

Example 1: Show Values on Vertical Barplot

The following code shows how to display the values on a vertical barplot:

#create vertical barplot
p = sns.barplot(x="day", y="tip", data=data, ci=None)

#show values on barplot
show_values(p)

Example 2: Show Values on Horizontal Barplot

The following code shows how to display the values on a horizontal barplot:

#create horizontal barplot
p = sns.barplot(x="tip", y="day", data=data, ci=None)

#show values on barplot
show_values(p, "h", space=0)

Note that the larger the value you use for space, the further away the labels will be from the bars.

For example, let’s change the space from 0 to .05:

#create horizontal barplot
p = sns.barplot(x="tip", y="day", data=data, ci=None)

#show values on barplot
show_values(p, "h", space=0.05)

Note: To change the number of decimal places shown, simply change the value in this line of the function:

value = '{:.1f}'.format(p.get_height())

For example, change it from .1f to .2f to show two decimal places instead of one.

Additional Resources

The following tutorials explain how to perform other common functions in seaborn:

How to Create a Pie Chart in Seaborn
How to Create a Time Series Plot in Seaborn
How to Create Multiple Seaborn Plots in One Figure

Related Posts