Python:Matplotlib 可视化利器的技术指南

admin
4
2025-07-29

📊 1、简述

在数据可视化的世界里,Matplotlib 是 Python 中最基础、最核心的可视化库,也是像 Seaborn、Pandas 可视化、Plotly 等高阶库的底层基础。

本文将系统性介绍 Matplotlib 的使用,包括:

🔹 🧠 什么是 Matplotlib?
🔹 🛠️ 基本使用流程
🔹 🎨 常用图形绘制:折线图、柱状图、直方图、饼图、散点图、箱线图、热力图等
🔹 🔧 进阶技巧:子图、样式美化、中文显示、保存图像
🔹 ✅ 多个实践案例代码

image-cjos.png


🔍 2、Matplotlib 是什么?

Matplotlib 是一个 Python 2D 绘图库,能够以多种格式生成出版级别质量的图形,并支持在不同平台上交互式使用。

📦 安装:

pip install matplotlib

📚 官方文档: https://matplotlib.org/stable/


🛠️基础使用流程

import matplotlib.pyplot as plt

# 数据
x = [1, 2, 3, 4]
y = [10, 20, 25, 30]

# 绘图
plt.plot(x, y)

# 添加标签
plt.title("基础折线图")
plt.xlabel("X轴")
plt.ylabel("Y轴")

# 显示图像
plt.show()

🎨 3、常见图表类型与示例

1️⃣ 折线图(Line Plot)

import matplotlib.pyplot as plt

x = range(1, 6)
y = [2, 4, 6, 8, 10]
plt.plot(x, y, marker='o')
plt.title("折线图示例")
plt.show()

2️⃣ 柱状图(Bar Chart)

labels = ['A', 'B', 'C']
values = [10, 30, 20]
plt.bar(labels, values, color='skyblue')
plt.title("柱状图示例")
plt.show()

3️⃣ 直方图(Histogram)

import numpy as np
data = np.random.randn(1000)
plt.hist(data, bins=30, color='green', alpha=0.7)
plt.title("正态分布直方图")
plt.show()

4️⃣ 饼图(Pie Chart)

labels = ['苹果', '香蕉', '梨']
sizes = [40, 35, 25]
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.title("水果销售比例")
plt.show()

5️⃣ 散点图(Scatter Plot)

x = np.random.rand(50)
y = np.random.rand(50)
plt.scatter(x, y, color='purple')
plt.title("散点图示例")
plt.show()

6️⃣ 箱线图(Box Plot)

data = [np.random.normal(0, std, 100) for std in range(1, 4)]
plt.boxplot(data)
plt.title("箱线图示例")
plt.show()

7️⃣ 热力图(Heatmap)

import seaborn as sns
data = np.random.rand(5, 5)
sns.heatmap(data, annot=True, cmap='YlGnBu')
plt.title("热力图示例")
plt.show()

📐 常用图形参数

参数 说明
marker 点样式,如 'o', '^'
color 颜色,如 'blue', '#FF00FF'
linestyle 线型:'-', '--', ':'
alpha 透明度(0~1)
label 图例名称

🧩 4、多子图绘制

fig, axs = plt.subplots(1, 2, figsize=(10, 4))
axs[0].plot([1, 2, 3], [4, 5, 6])
axs[1].bar(['A', 'B'], [3, 5])
plt.suptitle("子图示例")
plt.show()

🌐 中文支持与保存图片

plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文支持
plt.rcParams['axes.unicode_minus'] = False    # 负号正常显示

plt.plot([1, 2], [3, 4])
plt.title("中文标题示例")
plt.savefig("my_plot.png", dpi=300)  # 保存图像
plt.show()

🚀 5、实用项目场景示例

✅ 财务分析图表(销售额 vs 投放)

使用双 Y 轴比较趋势(见前文)

✅ 教育统计

🔹 学生成绩分布(箱线图 + 直方图)
🔹 各班平均成绩(柱状图)

✅ 实验数据对比

🔹 控制组与实验组随时间变化对比(双折线图)
🔹 多组散点回归拟合


🧠 6、总结

特点 描述
高度可定制 支持几乎所有细节的手动控制
与 NumPy、Pandas 完美结合 支持直接绘制 DataFrame/数组等
可扩展性强 可与 Seaborn、Plotly、Basemap 联合使用
跨平台 & 保存方便 可导出为 PNG、SVG、PDF 等格式

代码样例:https://gitee.com/lhdxhl/python-demo.git

📚 推荐扩展学习

🔹 Seaborn:高级统计图形
🔹 Plotly:交互式图表
🔹 mplfinance:金融K线图绘制


需要我将此博客导出为 Markdown / Jupyter Notebook / PDF 吗?或者帮你写个图表自动生成工具也行 😎 如果你有某种具体业务场景,也可以定制图表模板!

动物装饰