📜  在 seaborn 中绘制直方图 - Python (1)

📅  最后修改于: 2023-12-03 15:23:19.008000             🧑  作者: Mango

在 seaborn 中绘制直方图 - Python

直方图是一种表示数据分布的图表。在 Python 中,有许多绘制直方图的库,其中最常用的是 seaborn 库。Seaborn 是一个基于 Matplotlib 库的数据可视化库,它提供了更高级和更美观的图表。

绘制简单的直方图

绘制直方图最简单的方法是使用 Seaborn 的 distplot() 函数。下面是绘制一个简单的直方图的示例代码:

import seaborn as sns

# 导入数据
tips = sns.load_dataset('tips')

# 绘制直方图
sns.distplot(tips['total_bill'], kde=False)

这段代码将会导入 Seaborn 库并从内置数据集 tips 中加载数据。然后,使用 sns.distplot() 函数绘制 total_bill 列的直方图。 kde=False 参数表示不在直方图上显示核密度曲线。

自定义直方图的外观

Seaborn 类似于 Matplotlib,可以使用各种参数自定义直方图的外观。例如,可以更改直方图的颜色、透明度、箱体宽度等。下面是一个简单示例:

import seaborn as sns

# 导入数据
tips = sns.load_dataset('tips')

# 自定义直方图外观
sns.distplot(tips['total_bill'], kde=False, color='red', bins=30, hist_kws={'alpha': 0.6}, axlabel='Total bill amount')

# 添加网格线
sns.grid()

这段代码中,我们使用了以下参数来自定义直方图的外观:

  • color='red':指定直方图的颜色为红色。
  • bins=30:指定直方图中的条形数为 30。
  • hist_kws={'alpha': 0.6}:指定直方图的透明度为 0.6。
  • axlabel='Total bill amount':指定 x 轴的标签为 'Total bill amount'

此外,我们还添加了 sns.grid() 函数,将网格线添加到绘图中。

绘制分组直方图

有时候,我们需要将数据按组分组并绘制直方图。Seaborn 提供了 FacetGrid 类和 map() 函数来实现这一点。下面是一个简单的示例:

import seaborn as sns

# 导入数据
tips = sns.load_dataset('tips')

# 绘制分组直方图
g = sns.FacetGrid(data=tips, col='sex')
g.map(sns.distplot, 'total_bill', kde=False)

# 添加网格线
sns.grid()

这段代码将 tips 数据集按 sex 列进行分组,并使用 sns.distplot() 函数绘制 total_bill 列的直方图。 kde=False 参数表示不在直方图上显示核密度曲线。

使用 g.map() 函数将 sns.distplot() 函数应用于 FacetGrid 对象,并自动绘制子图。

绘制堆叠直方图

堆叠直方图是一种将多个直方图相互堆叠以形成一个更大直方图的图表。Seaborn 库可以轻松地绘制堆叠直方图,示例代码如下:

import seaborn as sns

# 导入数据
tips = sns.load_dataset('tips')

# 绘制堆叠直方图
sns.distplot(tips[tips['sex']=='Male']['total_bill'], hist=False, color='red', label='Male')
sns.distplot(tips[tips['sex']=='Female']['total_bill'], hist=False, color='blue', label='Female')

# 添加网格线和标签
sns.grid()
plt.xlabel('Total bill amount')
plt.ylabel('Density')

# 添加图例
plt.legend()

这段代码将 tips 数据集中的数据按性别分组,并在同一图表中绘制两个堆叠的直方图。我们在 sns.distplot() 函数中使用 hist=False 参数来禁用直方图条形,以显示核密度曲线。然后,我们使用标签 label='Male'label='Female' 来标识不同的直方图。

这里,我们需要使用 Matplotlib 函数 plt.xlabel()plt.ylabel() 来添加 x 轴和 y 轴标签。我们还使用 plt.legend() 函数在图表中添加图例。

总结

Seaborn 是一个功能强大的可视化库,用于绘制各种类型的图表,包括直方图。我们可以使用简单的 distplot() 函数,也可以使用更高级的 FacetGrid 类和 map() 函数来绘制分组直方图。我们还探讨了如何自定义直方图的外观,包括颜色、透明度和箱体宽度等。最后,我们还讨论了如何绘制堆叠直方图,并使用 Matplotlib 函数添加标签和图例。