Python使用Seaborn快速生成高颜值业务图表

 更新时间:2026年06月04日 09:49:18   作者:小庄-Python办公  
本文介绍了Python数据可视化库Seaborn的核心功能与应用场景,掌握Seaborn与Matplotlib的关系,学习使用Seaborn美化图表绘制各类分布图、分类图、回归图和配对图,提升数据可视化能力,需要的朋友可以参考下

本节学习目标

完成本节学习后,你将能够:

  1. 理解 Seaborn 与 Matplotlib 的关系和差异
  2. 使用 Seaborn 主题系统快速美化图表
  3. 绘制各类分布图(直方图、KDE、箱线图、小提琴图)
  4. 绘制分类数据对比图(条形图、点图、计数图)
  5. 绘制回归图分析变量间关系
  6. 使用配对图(pairplot)快速探索多变量关系
  7. 绘制热力图展示相关性矩阵和交叉数据
  8. 根据业务场景选择合适的图表类型

为什么学这个

想象一下这个场景:你花费整整一个下午,用 Matplotlib 写了 80 行代码,调整了颜色、字体、间距、图例位置……终于画出了一张"勉强能看"的柱状图。然后你的同事用 Seaborn 写了 3 行代码,画出了一张"惊艳全场"的图表。老板夸赞同事:“这图表做得真专业!”

这就是 Seaborn 的魅力——让好看得毫不费力

Seaborn 是基于 Matplotlib 的高级可视化库。它在 Matplotlib 的基础上做了三件事:

  1. 内置美观的主题:默认就好看,不需要反复调整
  2. 与 Pandas 深度集成:直接传入 DataFrame,自动识别列名
  3. 封装统计功能:一键绘制带统计信息的图表(如回归线、置信区间)

打个比方:如果说 Matplotlib 是"手动挡汽车",你需要自己控制离合、换挡、油门;那么 Seaborn 就是"自动挡汽车",你只需要告诉它目的地(数据),它自动帮你选择最佳路线。

核心知识点讲解

一、Seaborn 主题设置与风格美化

Seaborn 提供了 5 种内置主题和多种调色板,这是它"开箱即美"的秘诀。

1.1 五大内置主题

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

# Seaborn 五大主题:'darkgrid', 'whitegrid', 'dark', 'white', 'ticks'
themes = ['darkgrid', 'whitegrid', 'dark', 'white', 'ticks']

fig, axes = plt.subplots(2, 3, figsize=(15, 10))
axes = axes.flatten()

x = np.linspace(0, 10, 100)
y = np.sin(x) + np.random.normal(0, 0.1, 100)

for i, theme in enumerate(themes):
    sns.set_theme(style=theme)
    axes[i].plot(x, y, linewidth=2)
    axes[i].set_title(f"主题: {theme}", fontsize=13, fontweight='bold')

# 隐藏多余的子图
axes[5].axis('off')

fig.suptitle('Seaborn 五大主题对比', fontsize=18, fontweight='bold', y=1.02)
plt.tight_layout()
plt.show()

主题选择建议

  • darkgrid:默认主题,灰色网格,适合大多数场景
  • whitegrid:白色背景加网格,适合学术论文
  • dark:深色背景,适合大屏展示
  • white:纯白背景,适合印刷
  • ticks:带刻度线的简洁风格

1.2 调色板(Palette)

调色板决定了图表的颜色方案。Seaborn 提供三种调色板类型:

import seaborn as sns
import matplotlib.pyplot as plt

# 查看 Seaborn 内置的所有调色板
palettes = ['deep', 'muted', 'pastel', 'bright', 'dark', 'colorblind']

fig, axes = plt.subplots(2, 3, figsize=(15, 6))
axes = axes.flatten()

for i, palette in enumerate(palettes):
    colors = sns.color_palette(palette, 6)
    sns.set_theme(style='white')
    sns.barplot(x=['A', 'B', 'C', 'D', 'E', 'F'], 
                y=[30, 50, 40, 60, 35, 55],
                palette=palette, ax=axes[i])
    axes[i].set_title(f'调色板: {palette}', fontsize=12)
    axes[i].set_xlabel('')

plt.tight_layout()
plt.show()

调色板选择指南

调色板适用场景特点
deep通用默认配色,饱和度适中
muted学术报告柔和不刺眼
pastel轻松场景淡雅柔和
colorblind公共展示色盲友好
Set1 / Set2分类数据定性调色板

二、分布图——理解数据的"长相"

分布图帮助我们回答:“数据集中在哪里?有没有异常?对称吗?”

2.1 直方图 + KDE 曲线(histplot)

直方图展示数据分布,KDE(核密度估计)是直方图的"平滑版"。

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

# 模拟数据:员工薪资分布
np.random.seed(42)
salaries = np.concatenate([
    np.random.normal(8000, 1500, 200),   # 普通员工
    np.random.normal(15000, 3000, 50),    # 中层管理
    np.random.normal(30000, 5000, 10)     # 高管
])

df = pd.DataFrame({'salary': salaries, 
                   'level': ['普通员工']*200 + ['中层管理']*50 + ['高管']*10})

fig, axes = plt.subplots(1, 3, figsize=(18, 5))

# 子图1:基础直方图
sns.histplot(data=df, x='salary', bins=30, kde=False, 
             color='#1E88E5', ax=axes[0])
axes[0].set_title('基础直方图', fontsize=14, fontweight='bold')
axes[0].set_xlabel('薪资(元)')

# 子图2:直方图 + KDE
sns.histplot(data=df, x='salary', bins=30, kde=True, 
             color='#E53935', ax=axes[1])
axes[1].set_title('直方图 + KDE 密度曲线', fontsize=14, fontweight='bold')
axes[1].set_xlabel('薪资(元)')

# 子图3:按类别分组的 KDE
sns.kdeplot(data=df, x='salary', hue='level', fill=True, 
            palette=['#4CAF50', '#FF9800', '#E53935'], ax=axes[2])
axes[2].set_title('按级别分组的薪资分布', fontsize=14, fontweight='bold')
axes[2].set_xlabel('薪资(元)')

plt.tight_layout()
plt.show()

2.2 箱线图(boxplot)

箱线图就像数据的"体检报告",一眼看出中位数、四分位数和异常值。

         最小值(非异常)      最大值(非异常)
              |               |
              |--- 上须 ---|   |--- 上须 ---|
                         |   |
     异常值 o            |   |            o 异常值
                        ┌─┐
         ──────────────┤ │├──────────────
         Q1(25%)       │ ││       Q3(75%)
                       └─┘
                      中位数
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# 模拟数据:各部门薪资
np.random.seed(42)
df = pd.DataFrame({
    '部门': np.random.choice(['技术部', '销售部', '市场部', '运营部'], 200),
    '薪资': np.random.normal(12000, 3000, 200) + 
           np.random.choice([2000, -1000, 500, -500], 200)
})

fig, axes = plt.subplots(1, 2, figsize=(14, 6))

# 子图1:箱线图
sns.boxplot(data=df, x='部门', y='薪资', 
            palette='Set2', ax=axes[0],
            boxprops=dict(alpha=0.8),
            flierprops=dict(marker='o', color='#E53935', alpha=0.5))
axes[0].set_title('各部门薪资箱线图', fontsize=14, fontweight='bold')
axes[0].set_ylabel('薪资(元)')

# 子图2:小提琴图(箱线图的"升级版",显示分布密度)
sns.violinplot(data=df, x='部门', y='薪资', 
               palette='Set2', ax=axes[1],
               inner='box')  # inner='box' 在小提琴内部画箱线图
axes[1].set_title('各部门薪资小提琴图', fontsize=14, fontweight='bold')
axes[1].set_ylabel('薪资(元)')

plt.tight_layout()
plt.show()

三、分类图——比较不同类别的数据

3.1 条形图(barplot)

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

# 模拟数据:不同产品的季度销售
np.random.seed(42)
df = pd.DataFrame({
    '产品': np.random.choice(['产品A', '产品B', '产品C', '产品D'], 100),
    '季度': np.random.choice(['Q1', 'Q2', 'Q3', 'Q4'], 100),
    '销量': np.random.randint(50, 200, 100)
})

fig, axes = plt.subplots(1, 2, figsize=(14, 5))

# 子图1:简单条形图(自动计算均值和置信区间)
sns.barplot(data=df, x='产品', y='销量', palette='Set1', ax=axes[0])
axes[0].set_title('各产品平均销量', fontsize=14, fontweight='bold')
axes[0].set_ylabel('平均销量')

# 子图2:分组条形图
sns.barplot(data=df, x='产品', y='销量', hue='季度', palette='viridis', ax=axes[1])
axes[1].set_title('各产品分季度销量', fontsize=14, fontweight='bold')
axes[1].set_ylabel('平均销量')

plt.tight_layout()
plt.show()

3.2 点图(pointplot)

点图强调数据点之间的趋势变化,特别适合看"走势"。

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

# 模拟数据:各渠道月度转化率
np.random.seed(42)
df = pd.DataFrame({
    '渠道': np.random.choice(['搜索', '社交', '邮件', '直访'], 120),
    '月份': np.tile(np.arange(1, 11), 12),
    '转化率': np.random.uniform(2, 8, 120) + 
             np.random.choice([1, 0, -0.5], 120)
})

fig, ax = plt.subplots(figsize=(10, 6))

sns.pointplot(data=df, x='月份', y='转化率', hue='渠道', 
              palette='Set1', ax=ax,
              marker='o', markersize=8,
              errorbar='sd')  # 误差线使用标准差

ax.set_title('各渠道月度转化率趋势', fontsize=16, fontweight='bold')
ax.set_ylabel('转化率(%)')
ax.grid(True, alpha=0.3)

plt.tight_layout()
plt.show()

3.3 计数图(countplot)

计数图就是"数一数每个类别有多少条数据",相当于分类的直方图。

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

# 模拟数据:客户满意度调查
np.random.seed(42)
df = pd.DataFrame({
    '满意度': np.random.choice(['非常不满意', '不满意', '一般', '满意', '非常满意'], 
                              200, p=[0.05, 0.15, 0.30, 0.35, 0.15]),
    '渠道': np.random.choice(['线上', '线下'], 200)
})

fig, axes = plt.subplots(1, 2, figsize=(14, 5))

# 子图1:简单计数图
sns.countplot(data=df, x='满意度', palette='RdYlGn', order=['非常不满意', '不满意', '一般', '满意', '非常满意'], ax=axes[0])
axes[0].set_title('客户满意度分布', fontsize=14, fontweight='bold')
axes[0].tick_params(axis='x', rotation=30)

# 子图2:分组计数图
sns.countplot(data=df, x='满意度', hue='渠道', palette='Set2', 
              order=['非常不满意', '不满意', '一般', '满意', '非常满意'], ax=axes[1])
axes[1].set_title('各渠道客户满意度分布', fontsize=14, fontweight='bold')
axes[1].tick_params(axis='x', rotation=30)

plt.tight_layout()
plt.show()

四、回归图——分析变量之间的关系

回归图不仅能展示两个变量的关系,还会自动拟合回归线并显示置信区间。

4.1 散点回归图(regplot)

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

# 模拟数据:广告投入与销售额
np.random.seed(42)
n = 100
df = pd.DataFrame({
    '广告投入': np.random.uniform(5, 50, n),
    '销售额': 0,
    '渠道': np.random.choice(['线上', '线下', '社交'], n)
})
# 销售额 = 2.5 * 广告投入 + 随机噪声 + 渠道效应
df['销售额'] = (2.5 * df['广告投入'] + 
                np.random.normal(0, 10, n) + 
                np.where(df['渠道'] == '线上', 20, 
                np.where(df['渠道'] == '社交', 10, 0)))

fig, axes = plt.subplots(1, 2, figsize=(14, 5))

# 子图1:整体回归图
sns.regplot(data=df, x='广告投入', y='销售额', 
            scatter_kws={'alpha': 0.6, 's': 60},
            line_kws={'color': '#E53935', 'linewidth': 2},
            ax=axes[0])
axes[0].set_title('广告投入与销售额(整体回归)', fontsize=13, fontweight='bold')

# 子图2:按渠道分组的回归图(lmplot 风格)
for channel, color in zip(['线上', '线下', '社交'], ['#1E88E5', '#43A047', '#FB8C00']):
    subset = df[df['渠道'] == channel]
    sns.regplot(data=subset, x='广告投入', y='销售额', 
                scatter_kws={'alpha': 0.6, 's': 50},
                line_kws={'color': color, 'linewidth': 2},
                ax=axes[1], label=channel)

axes[1].set_title('分渠道回归分析', fontsize=13, fontweight='bold')
axes[1].legend()

plt.tight_layout()
plt.show()

五、配对图(pairplot)——多变量关系的"全景图"

pairplot 是 EDA(探索性数据分析)中最强大的工具之一。它一次性展示所有数值变量两两之间的关系。

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

# 使用内置的 iris 数据集(如果无法加载,使用模拟数据)
try:
    iris = sns.load_dataset('iris')
except:
    np.random.seed(42)
    iris = pd.DataFrame({
        'sepal_length': np.concatenate([np.random.normal(5.0, 0.35, 50),
                                        np.random.normal(5.9, 0.5, 50),
                                        np.random.normal(6.6, 0.6, 50)]),
        'sepal_width': np.concatenate([np.random.normal(3.4, 0.38, 50),
                                       np.random.normal(2.8, 0.3, 50),
                                       np.random.normal(3.0, 0.35, 50)]),
        'petal_length': np.concatenate([np.random.normal(1.5, 0.17, 50),
                                        np.random.normal(4.3, 0.47, 50),
                                        np.random.normal(5.6, 0.55, 50)]),
        'petal_width': np.concatenate([np.random.normal(0.25, 0.1, 50),
                                       np.random.normal(1.3, 0.2, 50),
                                       np.random.normal(2.0, 0.27, 50)]),
        'species': ['setosa']*50 + ['versicolor']*50 + ['virginica']*50
    })

# 创建配对图
g = sns.pairplot(iris, hue='species', palette='Set1',
                 diag_kind='kde',  # 对角线用 KDE 图
                 markers=['o', 's', 'D'],
                 plot_kws={'alpha': 0.7, 's': 80})

g.fig.suptitle('鸢尾花数据集配对图', fontsize=18, fontweight='bold', y=1.02)
plt.show()

pairplot 解读技巧

  • 对角线:每个变量自身的分布(直方图或 KDE)
  • 下三角/上三角:两两变量之间的散点图
  • 颜色:按类别分组,观察不同类别是否聚集

六、热力图(heatmap)——矩阵数据的"可视化放大镜"

热力图用颜色深浅表示数值大小,是展示相关性矩阵、交叉分析表的利器。

6.1 相关性热力图

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

# 模拟数据:业务指标相关性分析
np.random.seed(42)
df = pd.DataFrame({
    '广告投入': np.random.uniform(10, 100, 200),
    '网站流量': 0,
    '注册人数': 0,
    '购买人数': 0,
    '客单价': 0,
    '总营收': 0
})

# 生成有相关性的数据
df['网站流量'] = df['广告投入'] * 3 + np.random.normal(0, 50, 200)
df['注册人数'] = df['网站流量'] * 0.1 + np.random.normal(0, 20, 200)
df['购买人数'] = df['注册人数'] * 0.3 + np.random.normal(0, 10, 200)
df['客单价'] = np.random.normal(200, 50, 200)
df['总营收'] = df['购买人数'] * df['客单价'] + np.random.normal(0, 5000, 200)

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

fig, axes = plt.subplots(1, 2, figsize=(16, 6))

# 子图1:完整热力图
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', center=0,
            fmt='.2f', linewidths=0.5, ax=axes[0],
            cbar_kws={'label': '相关系数'})
axes[0].set_title('业务指标相关性热力图', fontsize=14, fontweight='bold')

# 子图2:上三角掩码(只看一半)
mask = np.triu(np.ones_like(corr_matrix, dtype=bool))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', center=0,
            mask=mask, fmt='.2f', linewidths=0.5, ax=axes[1],
            cbar_kws={'label': '相关系数'})
axes[1].set_title('上三角掩码热力图(去重)', fontsize=14, fontweight='bold')

plt.tight_layout()
plt.show()

6.2 聚类热力图(clustermap)

clustermap 会自动对行和列进行聚类,把相似的数据聚在一起。

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

# 模拟数据:不同城市各月销售额
np.random.seed(42)
cities = ['北京', '上海', '广州', '深圳', '杭州', '成都', '南京', '武汉']
months = [f'{i}月' for i in range(1, 13)]

# 生成有季节性的数据
data = {}
for city in cities:
    base = np.random.uniform(100, 300)
    seasonal = 30 * np.sin(np.linspace(0, 2*np.pi, 12))
    data[city] = base + seasonal + np.random.normal(0, 15, 12)

df = pd.DataFrame(data, index=months)

# 绘制聚类热力图
g = sns.clustermap(df.T, cmap='YlOrRd', figsize=(12, 8),
                   annot=True, fmt='.0f', linewidths=0.5,
                   cbar_kws={'label': '销售额(万元)'})

g.fig.suptitle('各城市月度销售聚类热力图', fontsize=16, fontweight='bold', y=1.02)
plt.show()

七、Seaborn 高级技巧

7.1 自定义主题参数

import seaborn as sns
import matplotlib.pyplot as plt

# 使用 set_theme 自定义主题
sns.set_theme(
    style='darkgrid',       # 背景风格
    palette='Set2',         # 默认调色板
    font='sans-serif',      # 字体
    font_scale=1.2,         # 字体缩放比例
    rc={                    # matplotlib 参数
        'axes.titlesize': 16,
        'axes.titleweight': 'bold',
        'axes.labelsize': 13,
        'legend.fontsize': 11,
        'figure.titlesize': 18
    }
)

# 之后所有图表都会使用这个主题
fig, ax = plt.subplots(figsize=(10, 6))
tips = sns.load_dataset('tips')
sns.boxplot(data=tips, x='day', y='total_bill', hue='sex', ax=ax)
ax.set_title('自定义主题后的图表', fontsize=18)

plt.tight_layout()
plt.show()

7.2 FacetGrid——分面图

FacetGrid 允许你按照某个分类变量将数据分成多个子图,每个子图展示一个子集。

import seaborn as sns
import matplotlib.pyplot as plt

# 使用内置数据集
tips = sns.load_dataset('tips')

# 按「时间」和「吸烟」分面
g = sns.FacetGrid(tips, col='time', row='smoker', height=4, aspect=1.2)
g.map(sns.scatterplot, 'total_bill', 'tip', alpha=0.7, s=80)
g.add_legend()
g.fig.suptitle('小费数据集分面图', fontsize=16, fontweight='bold', y=1.02)

plt.tight_layout()
plt.show()

实战练习

练习一:电商用户行为分析

假设你有一份电商用户行为数据,包含用户ID、访问页面数、停留时长、购买金额、用户等级。请完成以下分析:

  1. 绘制购买金额的分布图(直方图+KDE)
  2. 按用户等级绘制购买金额的箱线图
  3. 绘制访问页面数与购买金额的关系图(含回归线)
  4. 绘制各指标的相关性热力图

参考答案

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

# 生成模拟数据
np.random.seed(42)
n = 500
df = pd.DataFrame({
    '用户ID': range(1, n+1),
    '访问页面数': np.random.randint(1, 20, n),
    '停留时长': np.random.exponential(15, n),
    '购买金额': 0,
    '用户等级': np.random.choice(['青铜', '白银', '黄金', '钻石'], n, p=[0.4, 0.3, 0.2, 0.1])
})

# 购买金额与等级和页面数相关
grade_bonus = {'青铜': 0, '白银': 50, '黄金': 100, '钻石': 200}
df['购买金额'] = (df['访问页面数'] * 15 + 
                  df['停留时长'] * 5 + 
                  df['用户等级'].map(grade_bonus) +
                  np.random.normal(0, 50, n))
df['购买金额'] = df['购买金额'].clip(0)

# 设置主题
sns.set_theme(style='whitegrid', font_scale=1.1)

fig = plt.figure(figsize=(18, 12))
fig.suptitle('电商用户行为分析报告', fontsize=20, fontweight='bold', y=0.98)

# 1. 购买金额分布
ax1 = fig.add_subplot(2, 2, 1)
sns.histplot(data=df, x='购买金额', kde=True, bins=30, color='#1E88E5', ax=ax1)
ax1.set_title('购买金额分布', fontsize=14)

# 2. 按等级的箱线图
ax2 = fig.add_subplot(2, 2, 2)
grade_order = ['青铜', '白银', '黄金', '钻石']
sns.boxplot(data=df, x='用户等级', y='购买金额', order=grade_order, 
            palette='Set1', ax=ax2)
ax2.set_title('各等级用户购买金额对比', fontsize=14)

# 3. 回归图
ax3 = fig.add_subplot(2, 2, 3)
sns.regplot(data=df, x='访问页面数', y='购买金额', 
            scatter_kws={'alpha': 0.4, 's': 40},
            line_kws={'color': '#E53935'}, ax=ax3)
ax3.set_title('页面数与购买金额关系', fontsize=14)

# 4. 相关性热力图
ax4 = fig.add_subplot(2, 2, 4)
numeric_df = df[['访问页面数', '停留时长', '购买金额']]
corr = numeric_df.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm', center=0, fmt='.2f', ax=ax4)
ax4.set_title('数值指标相关性', fontsize=14)

plt.tight_layout()
plt.show()

练习二:产品满意度调查可视化

某公司对新产品进行满意度调查,收集了评分(1-5分)、使用时长、年龄段、性别等数据。请用 Seaborn 绘制一份完整的分析报告。

参考答案

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

# 生成数据
np.random.seed(42)
n = 300
df = pd.DataFrame({
    '评分': np.random.choice([1, 2, 3, 4, 5], n, p=[0.05, 0.1, 0.25, 0.4, 0.2]),
    '使用时长(月)': np.random.exponential(6, n),
    '年龄段': np.random.choice(['18-25', '26-35', '36-45', '46+'], n, p=[0.3, 0.4, 0.2, 0.1]),
    '性别': np.random.choice(['男', '女'], n)
})

# 设置主题
sns.set_theme(style='darkgrid', palette='Set2', font_scale=1.1)

fig, axes = plt.subplots(2, 2, figsize=(16, 12))
fig.suptitle('产品满意度调查报告', fontsize=20, fontweight='bold', y=1.02)

# 1. 评分分布(计数图)
sns.countplot(data=df, x='评分', palette='RdYlGn', ax=axes[0, 0])
axes[0, 0].set_title('评分分布', fontsize=14)
axes[0, 0].set_xlabel('评分')

# 2. 不同年龄段评分对比(小提琴图)
age_order = ['18-25', '26-35', '36-45', '46+']
sns.violinplot(data=df, x='年龄段', y='评分', order=age_order, 
               palette='Set1', ax=axes[0, 1], inner='box')
axes[0, 1].set_title('年龄段与评分', fontsize=14)

# 3. 性别与使用时长(分组箱线图)
sns.boxplot(data=df, x='性别', y='使用时长(月)', hue='性别', 
            palette='Set1', ax=axes[1, 0], legend=False)
axes[1, 0].set_title('不同性别使用时长', fontsize=14)

# 4. 使用时长与评分的关系(点图)
sns.pointplot(data=df, x='评分', y='使用时长(月)', ax=axes[1, 1],
              palette='Set1', errorbar='sd')
axes[1, 1].set_title('评分与使用时长的关系', fontsize=14)

plt.tight_layout()
plt.show()

本节总结

本节我们深入学习了 Seaborn 这个"高颜值"可视化工具:

  1. 主题系统:5 种主题 + 多种调色板,让图表开箱即美
  2. 分布图:histplot、kdeplot、boxplot、violinplot,全面掌握数据分布特征
  3. 分类图:barplot、pointplot、countplot,擅长比较不同类别
  4. 回归图:regplot 自动拟合回归线,快速探索变量关系
  5. 配对图:pairplot 一张图展示所有变量关系,EDA 利器
  6. 热力图:heatmap 和 clustermap,矩阵数据的可视化利器
  7. 分面图:FacetGrid 按类别拆分数据,多维度对比

核心认知:Seaborn 不是替代 Matplotlib,而是在它之上提供了更便捷的统计绘图接口。当你需要复杂定制时,仍然可以回退到 Matplotlib 的 Axes 对象进行操作。

以上就是Python使用Seaborn快速生成高颜值业务图表的详细内容,更多关于Python Seaborn生成业务图表的资料请关注脚本之家其它相关文章!

相关文章

最新评论