Seaborn是一个基于Matplotlib的Python数据可视化库,专注于提供一种高级界面用于绘制吸引人且信息丰富的统计图形。它是数据分析和统计建模的理想伴侣,特别是与Pandas这样的数据处理库结合使用时。Seaborn的特点和功能包括:

  1. 面向数据集的API:设计用于简化对多个变量间关系的探索,特别擅长处理分类数据。

  2. 统计图形:提供了多种图表类型,专为展示数据分布、关系、回归分析等统计特性而设计,比如散点图矩阵(pair plots)、联合分布图(jointplots)、箱线图(box plots)、热力图(heatmaps)、线性回归图(regression plots)等。

  3. 分类数据支持:Seaborn擅长处理分类数据,可以很容易地根据类别变量对数据进行分组和着色,使数据的结构和模式一目了然。

  4. 高度集成的绘图接口:通过简洁的函数调用和参数设置就能创建复杂的图表,减少了Matplotlib中可能需要的低级细节操作。

  5. 美观的默认样式:Seaborn提供了比Matplotlib更现代和吸引人的默认视觉样式,包括色彩主题和风格设置,使得图表无需过多调整即可直接用于演示或报告。

  6. 调色板和颜色管理:包含一系列精心设计的调色板,有助于数据模式的忠实展现,同时也允许用户自定义颜色方案。

  7. 多图网格构建:高级抽象功能帮助用户轻松创建复杂的多面板布局,适合展示数据的不同方面或进行比较分析。

  8. 与Pandas和Numpy的紧密集成:无缝处理这两种库的数据结构,使得数据导入、清洗到可视化的流程更加流畅。

  9. 灵活的定制:虽然提供了许多默认设置,但Seaborn也允许用户深入定制图表的各个方面,包括标签、图例、注释和样式。

通过Seaborn,数据科学家和分析师能够快速地从数据中提取见解,并以清晰、美观的方式呈现给受众。

文章:Seaborn 教程 | 菜鸟教程 (runoob.com)

安装

pip install seaborn

为了能够运行seaborn,请预先安装matplotlib:

pip install matplotlib

主题

Seaborn允许用户自定义图表的主题风格,以适应不同的报告或演示需求。这主要通过sns.set_theme()函数(在较旧版本的Seaborn中可能是sns.set())来实现,该函数允许你设置全局的图表样式

import seaborn as sns

# 设置主题和颜色调色板
sns.set_theme(style="whitegrid", palette="pastel")

一旦设置了主题,它将影响之后的所有图表,直到你改变设置或使用sns.reset_defaults()重置为默认设置。如果你只想对某个特定图表应用特定主题,可以在绘制该图表时直接在函数中传递相应的参数,而不是使用set_theme()

以下是各参数的说明

风格(style)

控制基本的视觉风格。Seaborn预设了几种风格,包括:

  • darkgrid: 黑色网格线,白色背景,这是默认风格。

  • whitegrid: 白色网格线,适合打印。

  • dark: 深色背景,无网格线。

  • white: 纯白背景,无网格线。

  • ticks: 最小主义风格,只有坐标轴刻度线。

色彩(palette)

设定颜色调色板。你可以指定一个预设的调色板名称,有如:

  • muted

  • pastel

  • bright

  • dark

  • colorblind

或者直接传入一个颜色列表。

字体(font_scale)

调整所有字体的大小。默认值为1,你可以设置一个更大的数值来放大字体

模板(context

影响元素的尺寸,如线条宽度和点的大小,以适应不同的展示环境,如:

  • paper

  • notebook

  • talk

  • poster

示例

import seaborn as sns
import matplotlib.pyplot as plt

# 设置主题风格为白色背景,无网格线
sns.set_theme(style="white")

# 或者使用更详细的设置
sns.set_theme(style="darkgrid", palette="muted", font_scale=1.5, context="notebook")

# 然后绘制你的图表,比如绘制散点图
tips = sns.load_dataset("tips")
sns.scatterplot(x="total_bill", y="tip", data=tips)
plt.show()

绘制图表

折线图

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

# 创建一个示例数据框
data = {'X': [1, 2, 3, 4, 5], 'Y': [5, 4, 3, 2, 1]}
df = pd.DataFrame(data)

# 绘制折线图
sns.lineplot(x='X', y='Y', data=df)
plt.show()

散点图

import seaborn as sns
import matplotlib.pyplot as plt

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

# 绘制散点图,x轴为total_bill,y轴为tip, hue参数按day分类着色
sns.scatterplot(x="total_bill", y="tip", hue="day", data=tips)
plt.title('Tips by Total Bill and Day')
plt.show()

直方图

import seaborn as sns
import matplotlib.pyplot as plt

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

# 使用内置的tips数据集绘制直方图
sns.histplot(data=tips, x="total_bill", kde=True, bins=20)
plt.title('Distribution of Total Bill')
plt.show()

柱状图

import seaborn as sns
import matplotlib.pyplot as plt

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

# 绘制各天tip的平均值条形图
bar_plot = sns.barplot(x="day", y="tip", data=tips)
bar_plot.set_title('Average Tip per Day')
plt.show()

热力图

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

# 生成一个随机的关联矩阵作为示例, 创建一个5x5的随机相关系数矩阵
np.random.seed(0)
data = np.random.randn(5, 5)
correlation_matrix = np.corrcoef(data, rowvar=False)

# 使用Seaborn绘制热力图
sns.set_theme(style="white")
hm = sns.heatmap(correlation_matrix, annot=True, fmt=".2f", cmap='coolwarm', cbar=True, square=True, linewidths=.5)
hm.set_xticklabels(hm.get_xticklabels(), rotation=45, horizontalalignment='right')
hm.set_yticklabels(hm.get_yticklabels(), rotation=0)

plt.title('Example Heatmap of Correlation Matrix')
plt.show()

小提琴图

import seaborn as sns
import matplotlib.pyplot as plt

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

# 按day分组显示total_bill的小提琴图
sns.violinplot(x="day", y="total_bill", data=tips)
plt.title('Total Bill Distribution by Day')
plt.show()

箱线图

import seaborn as sns
import matplotlib.pyplot as plt

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

# 同样是按day分组显示total_bill的箱线图
sns.boxplot(x="day", y="total_bill", data=tips)
plt.title('Total Bill Box Plot by Day')
plt.show()

文章作者: Vsoapmac
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 soap的会员制餐厅
数据分析 第三方库 个人分享
喜欢就支持一下吧