Как отображать значения на гистограмме Seaborn (с примерами)


Вы можете использовать следующую функцию для отображения значений на гистограмме моря:

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)

Эта функция работает как для горизонтальных, так и для вертикальных гистограмм.

В следующих примерах показано, как использовать эту функцию на практике со встроенным набором данных seaborn «tips»:

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

Пример 1: Показать значения на вертикальной гистограмме

Следующий код показывает, как отобразить значения на вертикальной гистограмме:

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

#show values on barplot
show_values(p)

Пример 2: Показать значения на горизонтальной гистограмме

Следующий код показывает, как отобразить значения на горизонтальной гистограмме:

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

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

Обратите внимание, что чем больше значение, которое вы используете для пробела, тем дальше будут метки от столбцов.

Например, давайте изменим пробел с 0 на 0,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 ) 

Примечание.Чтобы изменить отображаемое количество знаков после запятой, просто измените значение в этой строке функции:

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

Например, изменить его с.от 1f до .2f , чтобы отображались два десятичных знака вместо одного.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные функции в Seaborn:

Как создать круговую диаграмму в Seaborn
Как создать график временных рядов в Seaborn
Как создать несколько графиков Seaborn на одном рисунке