📌  相关文章
📜  如何在 Seaborn Barplot 上显示值?

📅  最后修改于: 2022-05-13 01:55:07.125000             🧑  作者: Mango

如何在 Seaborn Barplot 上显示值?

在本文中,我们将了解如何使用Python在 Seaborn Barplot 上显示值。

Seaborn是一个构建在 matplotlib 之上的数据可视化包,它使 seaborn 在不同的图表中具有多种自定义功能。通常,条形图将分类数据总结为矩形条,其高度与相应条的值成比例。 Seaborn 库提供了一个名为 Barplot() 的方法,该方法加载了 10 多个参数,可以绘制满足大多数要求的条形图。在这篇博客中,让我们讨论如何在 seaborn 条形图上显示条形值。

示例 1:

使用的数据集: tips

在带有 bar 的 seaborn barplot 中,可以使用 sns.barplot()函数和 sns.barplot() 返回的子方法容器来绘制值。导入 pandas、numpy 和 seaborn 包。使用 pandas read_csv函数读取数据集。现在,在两列之间创建一个条形图,在这里,让我们选择 x 轴是时间,y 轴作为提示。这将返回一个传统的条形图。该绘图对象存储在一个变量中。 plot 对象有一个称为容器的方法,可以列出每个条的属性。遍历容器对象的列表项并将每个项传递给 bar_label函数。这将提取并显示条形图中的条形值。

Python3
# import the necessary python packages
import pandas as pd
import seaborn as sns
import numpy as np
 
# read the dataset using pandas read_csv
# function
data = pd.read_csv(r"path to \tips.csv")
 
data.head()
 
# create a bar plot by specifying
# x and y axis and the data to be used.
ax = sns.barplot(x='time', y='tip',
                 hue='sex', data=data,
                 errwidth=0)
 
# sns.barplot method will return a list of
# sub methods use containers method to access
# the text label of each bar by passing it
# through the ax.bar_label function use for
# loop to iterate through the list of
# labels and assign each bar to a different
# label.
for i in ax.containers:
    ax.bar_label(i,)


Python3
# import the necessary python packages
import pandas as pd
import seaborn as sns
import numpy as np
 
# read the dataset using pandas read_csv
# function
data = pd.read_csv(r"path to\tips.csv")
 
# group the multi level categorical variables
# and reset_ the index to flatten the index
groupedvalues = data.groupby('day').sum().reset_index()
 
# use sns barplot to plot bar plot
# between days and tip value
ax = sns.barplot(x='day', y='tip',
                 data=groupedvalues,
                 errwidth=0)
 
# now simply assign the bar values to
# each bar by passing containers method
# to bar_label function
ax.bar_label(ax.containers[0])


Python3
# import the necessary python packages
import pandas as pd
import seaborn as sns
import numpy as np
 
# read the dataset using pandas read_csv
# function
data = pd.read_csv(r"path to\tips.csv")
 
# group the multilevel categorical
# values and flatten the index
groupedvalues = data.groupby('day').sum().reset_index()
 
# define the color palette of different colors
pal = sns.color_palette("Greens_d", len(groupedvalues))
# use argsort method
rank = groupedvalues["total_bill"].argsort()
 
# use dataframe grouped by days to plot a
# bar chart between days and total bill
ax = sns.barplot(x='day', y='total_bill',
                 data=groupedvalues,
                 palette=np.array(pal[::-1])[rank])
 
# now use a for loop to iterate through
# each row of the grouped dataframe
# assign bar value  to each row
for index, row in groupedvalues.iterrows():
    ax.text(row.name, row.tip, round(row.total_bill, 2),
            color='white', ha='center')


输出:

带有条形值的条形图

示例 2:

与上述方法不同,可以使用 sns.barplot()函数和 sns.barplot() 返回的相同子方法容器为分组条形图绘制带有条形值的 seaborn 条形图。导入 pandas、NumPy 和 seaborn 包。使用 pandas read_csv函数读取数据集。现在,从此处的分组数据框中创建一个条形图,让我们选择 x 轴作为天,y 轴作为总账单。这将再次返回传统的条形图。该绘图对象存储在一个变量中。 plot 对象有一个称为容器的方法,可以列出每个条的属性。现在,将容器对象传递给 bar_label函数。这将提取并显示条形图中的条形值。

Python3

# import the necessary python packages
import pandas as pd
import seaborn as sns
import numpy as np
 
# read the dataset using pandas read_csv
# function
data = pd.read_csv(r"path to\tips.csv")
 
# group the multi level categorical variables
# and reset_ the index to flatten the index
groupedvalues = data.groupby('day').sum().reset_index()
 
# use sns barplot to plot bar plot
# between days and tip value
ax = sns.barplot(x='day', y='tip',
                 data=groupedvalues,
                 errwidth=0)
 
# now simply assign the bar values to
# each bar by passing containers method
# to bar_label function
ax.bar_label(ax.containers[0])

输出:

带有条形值的条形图 - 分组数据框

示例 3:

如上所述,导入必要的包并使用 pandas read_csv()函数读取数据。 Sum 基于 day 列聚合数据。现在,使用您希望的颜色定义一个调色板列表。此调色板列表的长度必须对应于分组数据帧的长度。在这里,我们有兴趣在 day 和 total_bill 列之间绘制条形图。因此,argsort() 总帐单列将对列进行排序并返回已排序列的索引。现在,将 x、y 列传递给 barplot函数必须使用的数据。除此之外,将调色板对象转换为 numpy 数组并根据 argsort() 值重新排列数组。传递所有这些参数将返回一个箱线图。目的。现在使用 iterrows() 遍历分组数据帧的每一行,并使用 barplot 对象的 text函数将行的所需值分配为 bar 值。

Python3

# import the necessary python packages
import pandas as pd
import seaborn as sns
import numpy as np
 
# read the dataset using pandas read_csv
# function
data = pd.read_csv(r"path to\tips.csv")
 
# group the multilevel categorical
# values and flatten the index
groupedvalues = data.groupby('day').sum().reset_index()
 
# define the color palette of different colors
pal = sns.color_palette("Greens_d", len(groupedvalues))
# use argsort method
rank = groupedvalues["total_bill"].argsort()
 
# use dataframe grouped by days to plot a
# bar chart between days and total bill
ax = sns.barplot(x='day', y='total_bill',
                 data=groupedvalues,
                 palette=np.array(pal[::-1])[rank])
 
# now use a for loop to iterate through
# each row of the grouped dataframe
# assign bar value  to each row
for index, row in groupedvalues.iterrows():
    ax.text(row.name, row.tip, round(row.total_bill, 2),
            color='white', ha='center')

输出:

带有条形值的条形图 - 分组数据框