2026-06-14-数据可视化 Vol.3 可视化库
1017 个字
5 分钟
2026-06-14-数据可视化 Vol.3 可视化库
matplotlib / Seaborn
主要是下面六块
一、全局配置区
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] # ① 中文字体plt.rcParams['axes.unicode_minus'] = False # ② 负号正常显示plt.rcParams['figure.figsize'] = (8, 5) # ③ 默认画布尺寸plt.rcParams['figure.dpi'] = 100 # ④ 分辨率| 位置 | 答案 | 解释口径 |
|---|---|---|
plt.rcParams['___'] | font.sans-serif | 设置无衬线字体族,用于显示中文 |
= ['___'] | SimHei / Microsoft YaHei | 黑体/雅黑,Windows 自带中文字体 |
plt.rcParams['axes.unicode_minus'] = ___ | False | 关闭 Unicode 负号,避免负号显示为方块 |
二、Figure / Axes 创建区
单图
fig, ax = plt.subplots(figsize=(8, 5), dpi=100)多子图
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 8))axes[0, 0].plot(...) # 索引访问axes[1, 1].bar(...)plt.tight_layout() # 自动调整子图间距,防止标签重叠老写法
plt.figure(figsize=(8, 5))plt.subplot(2, 2, 1) # 2行2列第1个为什么用 fig, ax = plt.subplots() 而不是 plt.plot()?
答:面向对象写法可精确控制每个 Axes,便于多子图、嵌入 GUI、与 Seaborn 协作。
三、坐标轴与刻度区
ax.set_xlabel('时间', fontsize=12)ax.set_ylabel('数值', fontsize=12)ax.set_title('图表标题', fontsize=14, fontweight='bold')ax.set_xlim(0, 100)ax.set_ylim(0, 1)ax.set_xticks([0, 25, 50, 75, 100])ax.set_xticklabels(['一月', '二月', '三月', '四月', '五月'])ax.tick_params(axis='x', rotation=45, labelsize=10, colors='gray')ax.spines['top'].set_visible(False) # 去顶边框ax.spines['right'].set_visible(False) # 去右边框ax.grid(True, linestyle='--', alpha=0.3)ax.legend(loc='upper right', frameon=False)| 挖空 | 答案 | 一句话解释 |
|---|---|---|
ax.___('时间') | set_xlabel | 设置 x 轴标签 |
ax.tick_params(axis='x', ___=45) | rotation | 刻度文字旋转 45° |
ax.spines['top'].___(False) | set_visible | 隐藏顶部坐标轴边框 |
ax.legend(loc='___') | best / upper right | 图例放在最合适位置 |
四、十大图型最小模板
# 1. 柱形图ax.bar(x, y, color='#3A86FF', width=0.6, edgecolor='black')
# 2. 横向条形图ax.barh(y, x)
# 3. 直方图ax.hist(data, bins=20, density=False, edgecolor='black')
# 4. 箱线图ax.boxplot(data, labels=['A','B','C'], showfliers=True, notch=False)
# 5. 散点图ax.scatter(x, y, c=colors, s=sizes, alpha=0.6, cmap='viridis')
# 6. 气泡图(散点的s参数映射第三维)ax.scatter(x, y, s=z*100, c=z, cmap='coolwarm')
# 7. 折线图ax.plot(x, y, color='red', linestyle='--', linewidth=2, marker='o', label='系列A')
# 8. 面积图ax.fill_between(x, y1, y2, alpha=0.3, color='skyblue')
# 9. 主题河流图ax.stackplot(x, y1, y2, y3, labels=['A','B','C'], baseline='wiggle')
# 10. 玫瑰图 / 雷达图(极坐标)fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})ax.bar(theta, r, width=2*np.pi/N) # 玫瑰图ax.fill(angles, values, alpha=0.25) # 雷达图填充ax.bar(x, y, ___=0.6)→widthax.hist(data, ___=20)→binsax.scatter(x, y, ___=sizes)→s(点大小,气泡图核心)ax.plot(..., ___='o')→markerax.stackplot(..., ___='wiggle')→baseline(河流图居中堆叠的关键)subplot_kw={'projection': '___'}→polar(玫瑰/雷达必考)
五、颜色与 colormap
# 三种颜色写法color='red' # 命名color='#FF5733' # 十六进制color=(0.2, 0.4, 0.6) # RGB 元组(0–1)
# 常用 cmapcmap='viridis' # 默认推荐,色盲友好cmap='coolwarm' # 双向(正负数据、相关系数)cmap='RdYlBu_r' # 反向加 _rcmap='hot' # 热力图风格
# 加 colorbarsc = ax.scatter(x, y, c=z, cmap='viridis')plt.colorbar(sc, ax=ax, label='强度')_r 后缀含义?→ reversed,颜色顺序反转。
六、Seaborn
import seaborn as snssns.set_theme(style='whitegrid', palette='deep')
# 必背六图sns.barplot(x='cat', y='val', data=df, ax=ax)sns.boxplot(x='group', y='val', data=df, hue='gender')sns.violinplot(x='group', y='val', data=df, split=True)sns.histplot(data=df, x='val', bins=30, kde=True)sns.scatterplot(x='x', y='y', size='z', hue='label', data=df)sns.heatmap(corr, annot=True, fmt='.2f', cmap='coolwarm', vmin=-1, vmax=1)sns.lineplot(x='time', y='val', hue='series', data=df)sns.pairplot(df, hue='label') # Figure-level,自动建多子图| 挖空 | 答案 | 解释 |
|---|---|---|
sns.heatmap(corr, ___=True) | annot | 在格子里显示数值 |
sns.heatmap(..., ___='.2f') | fmt | 数值格式,保留两位小数 |
sns.histplot(..., ___=True) | kde | 叠加核密度曲线 |
sns.scatterplot(..., ___='z') | size | 用 z 列控制点大小 |
sns.set_theme(style='___') | whitegrid | 白底带网格主题 |
Seaborn 和 matplotlib 关系?→ Seaborn 是 matplotlib 的高级封装,返回的仍是 ax 对象,可继续用 matplotlib 的 API 微调。
七、收尾区
plt.tight_layout() # 自动调整布局,防止裁切plt.savefig('out.png', dpi=300, bbox_inches='tight') # 保存高清图plt.show()| 挖空 | 答案 | 解释 |
|---|---|---|
plt.___() | tight_layout | 自动调整子图间距 |
plt.savefig(..., ___='tight') | bbox_inches | 裁掉多余白边 |
plt.savefig(..., dpi=___) | 300 | 出版级分辨率 |
八、模板
import numpy as npimport matplotlib.pyplot as pltimport seaborn as sns
# ===== 1. 全局配置 =====plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = False
# ===== 2. 数据 =====x = np.arange(10)y = np.random.rand(10)
# ===== 3. 画布与子图 =====fig, ax = plt.subplots(figsize=(8, 5), dpi=100)
# ===== 4. 主图 =====ax.plot(x, y, color='#3A86FF', marker='o', linewidth=2, label='系列A')
# ===== 5. 坐标轴美化 =====ax.set_xlabel('时间', fontsize=12)ax.set_ylabel('数值', fontsize=12)ax.set_title('示例图', fontsize=14)ax.tick_params(axis='x', rotation=30, labelsize=10)ax.spines['top'].set_visible(False)ax.spines['right'].set_visible(False)ax.legend(loc='best', frameon=False)ax.grid(True, linestyle='--', alpha=0.3)
# ===== 6. 收尾 =====plt.tight_layout()plt.savefig('demo.png', dpi=300, bbox_inches='tight')plt.show()- 极坐标 →
projection='polar',玫瑰图/雷达图必考点。 - 相关系数矩阵 →
sns.heatmap(..., annot=True, cmap='coolwarm')。 - 多组对比 →
hue=参数(Seaborn)或axes[i,j]索引(matplotlib 子图)。 - 中文乱码 →
font.sans-serif+axes.unicode_minus两行。 - **
fill_between→ 面积图**;看见stackplot+baseline='wiggle'→ 答主题河流图。 - 解释:“该参数用于设置 XXX,作用是 XXX,若不设置会导致 XXX。”
分享到社交平台
将本文分享给你的朋友们
2026-06-14-数据可视化 Vol.3 可视化库
https://zhongye1.github.io/posts/数据可视化/2026-06-15-数据可视化-可视化库/ 相关文章 智能推荐
1
2026-06-14-数据可视化 Vol.1 概论
笔记 本文主要介绍数据可视化的定义、历史、视觉编码、视觉感知与认知、格式塔原理、优化方法、分析流程与常用工具等
2
2026-06-14-数据可视化 Vol.2 常见图表
笔记 本文主要介绍数据可视化的常见图表,主要包括其基础信息、构成与视觉通道、适用场景、优缺点和常见变体
3
给你的网站加上 Github Contributions Chart!
博客 给你的网站加上 Github Contributions Chart!
4
GitHub贡献图表📊
博客 给你的网站加上 Github Contributions Chart!
5
2026-06-13-从上下文工程到 Agent Harness Engineering
笔记 随着llm的发展,程序员的角色正在发生转变:不再是逐行敲代码的执行者,而是负责给出方向、保障代码质量、指挥模型干活的 "Builder"
随机文章 随便看看
Zhongye