Matplotlib 完全指南:从入门到精通的 Python 绘图库教程

部署运行你感兴趣的模型镜像

在数据可视化领域,Matplotlib 是 Python 最基础也最强大的绘图库。它提供了丰富的绘图接口,能创建从简单折线图到复杂热图的各类可视化图表,帮助开发者将数据转化为直观易懂的图形。本文将从基础入门到进阶技巧,全面讲解 Matplotlib 的使用方法,让你轻松掌握数据可视化技能。

一、Matplotlib 基础准备

1. 安装与导入

Matplotlib 是第三方库,需要通过 pip 安装:

bash

pip install matplotlib

在代码中通常使用 plt 作为别名导入 pyplot 模块:

python

import matplotlib.pyplot as plt
import numpy as np  # 配合 NumPy 使用

2. 基本绘图流程

Matplotlib 绘图遵循 "创建画布 - 绘制图形 - 设置属性 - 显示图像" 的基本流程:

python

# 创建数据
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)

# 创建画布和子图
plt.figure(figsize=(8, 4))  # 设置画布大小

# 绘制图形
plt.plot(x, y)

# 设置图表属性
plt.title("正弦曲线")
plt.xlabel("x 轴")
plt.ylabel("y 轴")
plt.grid(True)  # 显示网格

# 显示图像
plt.show()

二、基础图表类型实战

Matplotlib 支持多种图表类型,适用于不同的数据展示需求:

1. 折线图与散点图

python

# 折线图
x = np.arange(10)
y1 = np.random.randint(1, 10, 10)
y2 = np.random.randint(1, 10, 10)

plt.figure(figsize=(10, 5))
plt.plot(x, y1, marker='o', label='数据1')  # 添加标记点
plt.plot(x, y2, linestyle='--', marker='s', label='数据2')  # 虚线样式
plt.legend()  # 显示图例
plt.title("折线图示例")
plt.show()

# 散点图
x = np.random.randn(100)
y = np.random.randn(100)
colors = np.random.rand(100)  # 颜色值
sizes = 100 * np.random.rand(100)  # 点大小

plt.scatter(x, y, c=colors, s=sizes, alpha=0.6, cmap='viridis')
plt.colorbar(label='颜色强度')  # 添加颜色条
plt.title("散点图示例")
plt.show()

2. 柱状图与直方图

python

# 柱状图
categories = ['A', 'B', 'C', 'D']
values = [25, 40, 30, 35]

plt.bar(categories, values, color=['red', 'green', 'blue', 'yellow'])
plt.title("柱状图示例")
plt.show()

# 直方图
data = np.random.randn(1000)  # 正态分布数据

plt.hist(data, bins=30, alpha=0.7, edgecolor='black')
plt.title("直方图示例")
plt.xlabel("值")
plt.ylabel("频数")
plt.show()

三、子图与多图布局

当需要对比多个图表时,子图功能非常实用:

python

# 创建 2×2 子图布局
fig, axes = plt.subplots(2, 2, figsize=(12, 10))

# 第一个子图
x = np.linspace(0, 10, 100)
axes[0, 0].plot(x, np.sin(x))
axes[0, 0].set_title("正弦曲线")

# 第二个子图
axes[0, 1].scatter(np.random.rand(50), np.random.rand(50))
axes[0, 1].set_title("散点图")

# 第三个子图
categories = ['A', 'B', 'C']
axes[1, 0].bar(categories, [3, 7, 5])
axes[1, 0].set_title("柱状图")

# 第四个子图
data = np.random.randn(100)
axes[1, 1].hist(data, bins=20)
axes[1, 1].set_title("直方图")

# 调整子图间距
plt.tight_layout()
plt.show()

四、图表美化与定制

通过自定义样式让图表更具可读性和美观度:

python

# 设置中文显示
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题

# 自定义折线图样式
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

plt.figure(figsize=(10, 6))
# 自定义线条样式
plt.plot(x, y1, color='blue', linewidth=2, linestyle='-', marker='', label='sin(x)')
plt.plot(x, y2, color='red', linewidth=2, linestyle='--', marker='', label='cos(x)')

# 设置坐标轴范围
plt.xlim(0, 10)
plt.ylim(-1.2, 1.2)

# 设置刻度
plt.xticks(np.arange(0, 11, 2))
plt.yticks([-1, 0, 1])

# 添加文本标注
plt.annotate('最大值', xy=(np.pi/2, 1), xytext=(np.pi/2+1, 0.8),
             arrowprops=dict(arrowstyle='->'))

# 添加网格、标题和图例
plt.grid(alpha=0.3)  # 半透明网格
plt.title("正弦和余弦曲线对比", fontsize=15)
plt.legend(fontsize=12)
plt.show()

五、实战案例:数据分析可视化

结合数据分析流程,展示 Matplotlib 综合应用:

python

# 模拟销售数据
months = np.arange(1, 13)
product_a = np.random.randint(100, 300, 12)
product_b = np.random.randint(50, 200, 12)
product_c = np.random.randint(80, 250, 12)

# 创建画布
plt.figure(figsize=(12, 8))

# 绘制堆叠柱状图
plt.bar(months, product_a, label='产品A', width=0.8, bottom=0)
plt.bar(months, product_b, label='产品B', width=0.8, bottom=product_a)
plt.bar(months, product_c, label='产品C', width=0.8, 
        bottom=product_a+product_b)

# 添加折线图(月度总计)
total = product_a + product_b + product_c
plt.plot(months, total, color='black', marker='o', linewidth=2, 
         label='月度总计')

# 设置图表属性
plt.title("年度产品销售数据", fontsize=16)
plt.xlabel("月份", fontsize=12)
plt.ylabel("销售额", fontsize=12)
plt.xticks(months)
plt.legend()
plt.grid(axis='y', alpha=0.3)

# 添加数据标签
for i, v in enumerate(total):
    plt.text(months[i], v+10, str(v), ha='center')

plt.tight_layout()
plt.show()

Matplotlib 作为 Python 数据可视化的基础库,提供了极高的定制自由度。通过本文介绍的基础图表绘制、子图布局和样式美化技巧,你已经能够创建专业的数据分析图表。在实际应用中,建议结合 Seaborn 等高级库使用,它们基于 Matplotlib 封装了更精美的图表样式。随着实践深入,你将能根据数据特点选择合适的可视化方式,让数据通过图形传递更丰富的信息。

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值