渣渣兔 发表于 2024-8-20 08:52:15

Seaborn:基于 Matplotlib 的高级绘图库,提供了更高级的接口来绘制吸引人

引言

Seaborn 是基于 Matplotlib 的高级数据可视化库,专为绘制统计图形而计划。相比于 Matplotlib,Seaborn 提供了更高级的接口,简化了绘图过程,同时默认的美观配色和样式使得图形更加吸引人。Seaborn 特殊适适用于探索性数据分析和统计建模,其简洁的 API 利用户能够轻松创建复杂的图形,快速洞察数据中的模式、关系和分布。
Seaborn 与 Pandas 精密集成,支持直接利用 Pandas DataFrame 数据结构。它内置了多种常用的统计图形类型,如分布图、分类图、回归图、热力图等,能够满意大部分统计数据可视化的需求。Seaborn 在数据分析、数据科学和机器学习领域得到了广泛应用,是 Python 可视化领域的重要工具。
核心特性

1. 主题设置与样式管理



[*]默认主题与样式:Seaborn 提供了美观的默认主题和样式,用户无需手动设置即可天生出版质量级别的图形。默认主题具有更和谐的配色和更符合视觉美学的图形元素。
[*]自定义主题:通过 set_style 函数,用户可以选择差别的主题(如 whitegrid、darkgrid、white、dark 和 ticks),适应差别的数据展示需求。同时,Seaborn 还允许用户通过 set_context 函数设置图形的上下文(如 paper、notebook、talk 和 poster),以调整图形的比例和元素的大小。
2. 数据分布可视化



[*]直方图与密度图:Seaborn 的 displot 函数可以同时绘制直方图和核密度估计(KDE)图,用于展示数据的分布情况。kdeplot 函数可以单独绘制 KDE 图,而 rugplot 函数则可以在图形底部添加数据的原始观测值。
[*]联合分布图:jointplot 函数可以展示两个变量之间的关系,并显示它们的边际分布。通过选择差别的类型参数(如 scatter、kde、hex 等),用户可以天生散点图、KDE 图或六边形箱图。
[*]成对关系图:pairplot 函数用于绘制多变量数据会合的成对关系图,展示变量之间的相互关系和单变量的分布情况。它在探索性数据分析中非常有效,特殊是用于辨认变量间的相关性。
3. 分类数据可视化



[*]条形图:Seaborn 提供了 barplot 函数,用于绘制带有置信区间的条形图。它能够显示差别类别的数据均匀值及其变化范围,是展示分类数据统计结果的理想选择。
[*]箱线图与小提琴图:boxplot 和 violinplot 函数分别用于绘制箱线图和小提琴图,展示分类数据的分布、极值和中位数。小提琴图在箱线图的底子上增加了 KDE 分布信息,使得数据分布的展示更加具体。
[*]点图与条带图:pointplot 和 stripplot 函数用于绘制点图和条带图,适合展示分类数据的离散值和趋势。点图通常用于显示差别类别的均匀值或其他统计量,而条带图则用于展示所有数据点的分布情况。
4. 回归与矩阵图



[*]回归图:regplot 和 lmplot 函数用于绘制回归图,展示两个变量之间的线性关系,并可选择是否显示回归直线的置信区间。Seaborn 支持线性回归、逻辑回归、多项式回归等多种回归分析。
[*]热力图:heatmap 函数用于绘制二维数据的热力图,常用于展示相关矩阵或频率表。热力图通过颜色的深浅表示数值的大小,是数据可视化中非常直观的图形之一。
[*]聚类图:clustermap 函数用于绘制层次聚类的热力图,主动对数据进行聚类,并根据聚类结果重新分列数据。聚类图能够资助用户辨认数据中的模式和集群结构。
5. 多样化的数据集成与图形加强



[*]Pandas 数据集成:Seaborn 支持直接利用 Pandas DataFrame 进行绘图,无需手动将数据转换为其他格式。它能够主动辨认数据框中的列名,并将其用作图形的标签和图例。
[*]FacetGrid 与 PairGrid:Seaborn 的 FacetGrid 和 PairGrid 类允许用户通过差别的维度将数据分成多个子集,并为每个子集天生独立的图形。这种多维图形展示方法特殊适合于分析多变量数据和多层次数据。
[*]图形加强:Seaborn 的图形加强功能包括主动的图例天生、颜色映射控制、数据标准化、毛病条添加等,使得天生的图形更加丰富和信息化。
安装与基本利用

安装 Seaborn

Seaborn 可以通过 Python 的包管理工具 pip 进行安装。发起在捏造情况中安装 Seaborn 以避免与其他项目的依赖冲突。
pip install seaborn 安装乐成后,可以通过以下命令导入 Seaborn 并检察其版本号:
import seaborn as sns
print(sns.__version__) 基本利用示例

以下是一些 Seaborn 的基本利用示例,展示了怎样创建差别类型的统计图形并进行常见的自定义操纵。
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# 生成一些随机数据
data = np.random.randn(1000)

# 绘制数据的分布图
sns.displot(data, kde=True)
plt.title('Histogram and KDE Plot')
plt.show()

# 使用内置数据集进行分类绘图
tips = sns.load_dataset('tips')

# 绘制带有置信区间的条形图
sns.barplot(x='day', y='total_bill', data=tips)
plt.title('Bar Plot with Confidence Interval')
plt.show()

# 绘制回归图
sns.regplot(x='total_bill', y='tip', data=tips)
plt.title('Regression Plot')
plt.show()

# 绘制热力图
corr = tips.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm')
plt.title('Correlation Heatmap')
plt.show() 案例一:利用displot进行双变量分布可视化

在这个案例中,我们将利用displot函数来同时展示两个变量的分布以及它们之间的关系。假设我们有一个包罗身高(height)和体重(weight)的数据集。
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np


# 假设的数据集
data = {
    'height': np.random.normal(170, 10, 200),
    'weight': np.random.normal(70, 15, 200)
}
df = pd.DataFrame(data)

# 使用displot展示两个变量的分布
sns.displot(df, x="height", y="weight", kind="kde", cmap="coolwarm")
plt.title('Bivariate KDE Plot of Height and Weight')
plt.show()
https://img-blog.csdnimg.cn/img_convert/ea96042db2f7b2eccb67335a001bce18.png
案例二:利用pairplot进行多变量关系探索

在这个案例中,我们将利用pairplot函数来探索tips数据会合多个变量之间的关系。
import seaborn as sns
import matplotlib.pyplot as plt

# 加载内置数据集
tips = sns.load_dataset('tips')

# 绘制多变量关系图
g = sns.pairplot(tips, hue="time", palette="husl")

# 使用suptitle添加标题,并通过y参数调整其位置
plt.suptitle('Pairplot of Tips Dataset with Time as Hue', y=1.05)# y参数控制标题的垂直位置

plt.show()
https://img-blog.csdnimg.cn/img_convert/35198eab0729bf18ceb963841b3086c7.png
案例三:利用violinplot展示分类数据的分布

在这个案例中,我们将利用violinplot函数来展示差别类别下数据的分布情况。假设我们有一个包罗差别类别(category)和对应数值(value)的数据集。
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# 假设的数据集
data = {
    'category': ['A'] * 50 + ['B'] * 50,
    'value': np.concatenate()
}
df = pd.DataFrame(data)

# 绘制小提琴图
sns.violinplot(x="category", y="value", data=df, palette="Set2")
plt.title('Violin Plot of Values by Category')
plt.show()
https://img-blog.csdnimg.cn/img_convert/292304fec90af89ceb05d9a0e35d410b.png
案例四:利用heatmap展示相关矩阵

在这个案例中,我们将利用heatmap函数来展示一个数据集的相关矩阵,以揭示差别变量之间的相关性。
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

# 假设的数据集
data = {
    'X': np.random.normal(0, 1, 100),
    'Y': np.random.normal(0, 1, 100) + np.random.normal(0, 0.5, 100),
    'Z': np.random.normal(0, 1, 100) - np.random.normal(0, 0.5, 100)
}
df = pd.DataFrame(data)

# 计算相关矩阵
corr = df.corr()

# 绘制热力图
sns.heatmap(corr, annot=True, cmap="coolwarm")
plt.title('Correlation Heatmap')
plt.show()
https://img-blog.csdnimg.cn/img_convert/360adfad4aded55da872832329e165ec.png
案例五:利用FacetGrid进行条件数据可视化

在这个案例中,我们将利用FacetGrid来根据某个条件(如性别)将数据分成多个子集,并为每个子集绘制独立的图形。
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

# 加载内置数据集
tips = sns.load_dataset('tips')

# 使用FacetGrid根据性别分组绘制直方图
g = sns.FacetGrid(tips, col="sex", hue="sex", palette="Set1", height=5)
g.map(sns.histplot, "total_bill", kde=True)
g.add_legend()
plt.title('Histograms of Total Bill by Sex')
plt.show()
https://img-blog.csdnimg.cn/img_convert/c91a346ff2897390141dcf0ffea933d8.png
结论

Seaborn 是基于 Matplotlib 的高级绘图库,通过提供更高级的接口和默认美观的样式,使得统计数据的可视化变得简单而直观。Seaborn 的上风在于其简洁的 API、强大的数据集成和丰富的图形类型,特殊适适用于探索性数据分析和统计建模。掌握 Seaborn 能够资助用户更高效地分析数据、展示结果,并在数据科学工作流程中发挥重要作用。
更多资源



[*]Seaborn库官方文档

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Seaborn:基于 Matplotlib 的高级绘图库,提供了更高级的接口来绘制吸引人