📊 1、简述
在数据可视化的世界里,Matplotlib 是 Python 中最基础、最核心的可视化库,也是像 Seaborn、Pandas 可视化、Plotly 等高阶库的底层基础。
本文将系统性介绍 Matplotlib 的使用,包括:
🔹 🧠 什么是 Matplotlib?
🔹 🛠️ 基本使用流程
🔹 🎨 常用图形绘制:折线图、柱状图、直方图、饼图、散点图、箱线图、热力图等
🔹 🔧 进阶技巧:子图、样式美化、中文显示、保存图像
🔹 ✅ 多个实践案例代码
🔍 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 吗?或者帮你写个图表自动生成工具也行 😎 如果你有某种具体业务场景,也可以定制图表模板!