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

打印 上一主题 下一主题

主题 986|帖子 986|积分 2958

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

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 以避免与其他项目的依赖冲突。
  1. pip install seaborn
复制代码
安装乐成后,可以通过以下命令导入 Seaborn 并检察其版本号:
  1. import seaborn as sns
  2. print(sns.__version__)
复制代码
基本利用示例

以下是一些 Seaborn 的基本利用示例,展示了怎样创建差别类型的统计图形并进行常见的自定义操纵。
  1. import seaborn as sns
  2. import matplotlib.pyplot as plt
  3. import pandas as pd
  4. import numpy as np
  5. # 生成一些随机数据
  6. data = np.random.randn(1000)
  7. # 绘制数据的分布图
  8. sns.displot(data, kde=True)
  9. plt.title('Histogram and KDE Plot')
  10. plt.show()
  11. # 使用内置数据集进行分类绘图
  12. tips = sns.load_dataset('tips')
  13. # 绘制带有置信区间的条形图
  14. sns.barplot(x='day', y='total_bill', data=tips)
  15. plt.title('Bar Plot with Confidence Interval')
  16. plt.show()
  17. # 绘制回归图
  18. sns.regplot(x='total_bill', y='tip', data=tips)
  19. plt.title('Regression Plot')
  20. plt.show()
  21. # 绘制热力图
  22. corr = tips.corr()
  23. sns.heatmap(corr, annot=True, cmap='coolwarm')
  24. plt.title('Correlation Heatmap')
  25. plt.show()
复制代码
案例一:利用displot进行双变量分布可视化

在这个案例中,我们将利用displot函数来同时展示两个变量的分布以及它们之间的关系。假设我们有一个包罗身高(height)和体重(weight)的数据集。
  1. import seaborn as sns  
  2. import matplotlib.pyplot as plt  
  3. import pandas as pd
  4. import numpy as np
  5.   
  6. # 假设的数据集  
  7. data = {  
  8.     'height': np.random.normal(170, 10, 200),  
  9.     'weight': np.random.normal(70, 15, 200)  
  10. }  
  11. df = pd.DataFrame(data)  
  12.   
  13. # 使用displot展示两个变量的分布  
  14. sns.displot(df, x="height", y="weight", kind="kde", cmap="coolwarm")  
  15. plt.title('Bivariate KDE Plot of Height and Weight')  
  16. plt.show()
复制代码


案例二:利用pairplot进行多变量关系探索

在这个案例中,我们将利用pairplot函数来探索tips数据会合多个变量之间的关系。
  1. import seaborn as sns
  2. import matplotlib.pyplot as plt
  3. # 加载内置数据集
  4. tips = sns.load_dataset('tips')
  5. # 绘制多变量关系图
  6. g = sns.pairplot(tips, hue="time", palette="husl")
  7. # 使用suptitle添加标题,并通过y参数调整其位置
  8. plt.suptitle('Pairplot of Tips Dataset with Time as Hue', y=1.05)  # y参数控制标题的垂直位置
  9. plt.show()
复制代码


案例三:利用violinplot展示分类数据的分布

在这个案例中,我们将利用violinplot函数来展示差别类别下数据的分布情况。假设我们有一个包罗差别类别(category)和对应数值(value)的数据集。
  1. import seaborn as sns  
  2. import numpy as np  
  3. import matplotlib.pyplot as plt
  4. import pandas as pd
  5.   
  6. # 假设的数据集  
  7. data = {  
  8.     'category': ['A'] * 50 + ['B'] * 50,  
  9.     'value': np.concatenate([np.random.normal(0, 1, 50), np.random.normal(1, 1.5, 50)])  
  10. }  
  11. df = pd.DataFrame(data)  
  12.   
  13. # 绘制小提琴图  
  14. sns.violinplot(x="category", y="value", data=df, palette="Set2")  
  15. plt.title('Violin Plot of Values by Category')  
  16. plt.show()
复制代码


案例四:利用heatmap展示相关矩阵

在这个案例中,我们将利用heatmap函数来展示一个数据集的相关矩阵,以揭示差别变量之间的相关性。
  1. import seaborn as sns  
  2. import pandas as pd  
  3. import matplotlib.pyplot as plt
  4.   
  5. # 假设的数据集  
  6. data = {  
  7.     'X': np.random.normal(0, 1, 100),  
  8.     'Y': np.random.normal(0, 1, 100) + np.random.normal(0, 0.5, 100),  
  9.     'Z': np.random.normal(0, 1, 100) - np.random.normal(0, 0.5, 100)  
  10. }  
  11. df = pd.DataFrame(data)  
  12.   
  13. # 计算相关矩阵  
  14. corr = df.corr()  
  15.   
  16. # 绘制热力图  
  17. sns.heatmap(corr, annot=True, cmap="coolwarm")  
  18. plt.title('Correlation Heatmap')  
  19. plt.show()
复制代码


案例五:利用FacetGrid进行条件数据可视化

在这个案例中,我们将利用FacetGrid来根据某个条件(如性别)将数据分成多个子集,并为每个子集绘制独立的图形。
  1. import seaborn as sns  
  2. import pandas as pd  
  3. import matplotlib.pyplot as plt
  4.   
  5. # 加载内置数据集  
  6. tips = sns.load_dataset('tips')  
  7.   
  8. # 使用FacetGrid根据性别分组绘制直方图  
  9. g = sns.FacetGrid(tips, col="sex", hue="sex", palette="Set1", height=5)  
  10. g.map(sns.histplot, "total_bill", kde=True)  
  11. g.add_legend()  
  12. plt.title('Histograms of Total Bill by Sex')  
  13. plt.show()
复制代码


结论

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



  • Seaborn库官方文档

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

渣渣兔

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表