📜  如何使用 Seaborn histplot 制作带有密度图的直方图?

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

如何使用 Seaborn histplot 制作带有密度图的直方图?

直方图是表示一组连续数据分布的可视化工具。在直方图中,数据被划分为一组区间或区间(通常在 x 轴上)以及落入每个区间的数据点计数,对应于该区间上方的条形高度。这些 bin 的宽度可能相等,也可能不同,但相邻(没有间隙)。

密度图(也称为核密度图)是另一种用于评估数据分布的可视化工具。它可以被认为是一个平滑的直方图。密度图的峰值有助于显示值在区间内的集中位置。有多种平滑技术。核密度估计(KDE) 是用于平滑直方图的技术之一。

Seaborn 是一个基于Python中 matplotlib 的数据可视化库。在本文中,我们将使用seaborn.histplot()绘制带有密度图的直方图。

示例 1:我们将使用 random.randn() 方法生成数据。

Python3
# Import necessary libraries
import seaborn as sns
import numpy as np
import pandas as pd
  
# Genearting dataset of random numbers
np.random.seed(1)
num_var = np.random.randn(1000)
num_var = pd.Series(num_var, name = "Numerical Variable")
  
# Plot histogram
sns.histplot(data = num_var, kde = True)


Python3
# Import necessary libraries
import numpy as np
import pandas as pd
import seaborn as sns
  
# Load dataset
penguins = sns.load_dataset("penguins")
  
# Plot histogram
sns.histplot(data = penguins, x = "body_mass_g", kde = True)


Python3
# Plot Histogram
sns.histplot(data = penguins, x = "body_mass_g", kde = True, hue = "species")


Python3
# Import necessary libraries
import numpy as np
import pandas as pd
import seaborn as sns
  
# Load dataset
tips = sns.load_dataset("tips")
  
# Plot histogram
sns.histplot(data = tips, x = "size", stat = "probability", discrete = True)


输出:

默认情况下, seaborn.histplotkde参数设置为 false。因此,通过将kde设置为 true,计算核密度估计以平滑分布并绘制密度图线。

示例 2:让我们在本示例中使用来自 Seaborn 库的样本数据集 Penguins。该数据集显示了不同岛屿上不同企鹅物种的特征(体重、鳍状肢长度、喙长度性别)。

蟒蛇3

# Import necessary libraries
import numpy as np
import pandas as pd
import seaborn as sns
  
# Load dataset
penguins = sns.load_dataset("penguins")
  
# Plot histogram
sns.histplot(data = penguins, x = "body_mass_g", kde = True)

输出:

我们还可以在一个图中可视化多个物种的体重分布。色调参数映射语义变量“物种”。

蟒蛇3

# Plot Histogram
sns.histplot(data = penguins, x = "body_mass_g", kde = True, hue = "species")

输出:

示例 3:此示例使用来自 Seaborn 库的示例数据集 Tips,该数据集记录了餐厅服务器收到的提示。它包括收到的小费总账单或餐费、顾客的性别、顾客聚会的规模、日期、时间以及聚会上是否有吸烟者。此示例中的直方图不是数据点的计数,而是标准化的,以便每个条的高度显示概率。

蟒蛇3

# Import necessary libraries
import numpy as np
import pandas as pd
import seaborn as sns
  
# Load dataset
tips = sns.load_dataset("tips")
  
# Plot histogram
sns.histplot(data = tips, x = "size", stat = "probability", discrete = True)

输出: