Python数据可视化matplotlib.pyplot库的功能介绍、使用和代码示例
本文介绍了Python数据可视化库matplotlib.pyplot的基础使用方法和常用图表绘制技巧。主要内容包括:1) 库的简介与安装;2) 核心使用流程(数据准备、绘图函数调用、图表装饰);3) 6种常用图表的代码示例:线图、散点图、柱状图、直方图、饼图和子图;4) 进阶技巧如中文显示和图片保存。文章通过具体代码演示了每种图表的关键参数设置和样式调整方法,适合初学者快速掌握基础数据可视化技能。
·
文章目录
matplotlib.pyplot它是 Python 中最常用的数据可视化库,支持绘制各种静态、动态、交互式图表,广泛应用于数据分析、科学计算和学术研究中。
一、matplotlib.pyplot 简介
- 功能:提供类似 MATLAB 的绘图接口,可绘制线图、散点图、柱状图、直方图、饼图、热力图等几乎所有常见图表。
- 优势:高度可定制,支持调整图表样式、颜色、标签等细节,输出高质量图像(如 PNG、PDF、SVG 等格式)。
二、基础使用步骤
-
安装:
pip install matplotlib -
导入:
import matplotlib.pyplot as plt import numpy as np # 常与NumPy配合生成数据 -
核心流程:
- 准备数据(如 NumPy 数组、列表)。
- 调用绘图函数(如
plt.plot()、plt.scatter())。 - 添加标签、标题、图例等装饰。
- 显示或保存图表(
plt.show()或plt.savefig())。
三、常用图表及代码示例
1. 线图(Line Plot)
用于展示数据随时间或连续变量的变化趋势。
# 准备数据
x = np.linspace(0, 10, 100) # 0到10之间的100个均匀点
y1 = np.sin(x)
y2 = np.cos(x)
# 绘制线图
plt.plot(x, y1, label='sin(x)', color='blue', linestyle='-', linewidth=2) # 实线
plt.plot(x, y2, label='cos(x)', color='red', linestyle='--', linewidth=2) # 虚线
# 添加装饰
plt.title('正弦函数与余弦函数曲线', fontsize=14) # 标题
plt.xlabel('x轴', fontsize=12) # x轴标签
plt.ylabel('y轴', fontsize=12) # y轴标签
plt.legend(loc='upper right') # 图例(位置右上角)
plt.grid(alpha=0.3) # 网格线(透明度0.3)
plt.xlim(0, 10) # x轴范围
plt.ylim(-1.2, 1.2) # y轴范围
# 显示图表
plt.show()
2. 散点图(Scatter Plot)
用于展示两个变量之间的关系或分布规律。
# 准备数据(随机点)
np.random.seed(42) # 固定随机种子,确保结果可复现
x = np.random.randn(100) # 100个符合正态分布的x值
y = 2 * x + np.random.randn(100) * 0.5 # y与x近似线性相关,加噪声
sizes = np.random.randint(20, 100, 100) # 点的大小(20-100之间随机)
colors = np.random.rand(100) # 点的颜色(0-1随机,用于映射颜色条)
# 绘制散点图
plt.scatter(x, y, s=sizes, c=colors, alpha=0.7, cmap='viridis') # cmap指定颜色映射
# 添加装饰
plt.title('带颜色和大小的散点图', fontsize=14)
plt.xlabel('x', fontsize=12)
plt.ylabel('y', fontsize=12)
plt.colorbar(label='颜色值') # 显示颜色条
plt.grid(alpha=0.3)
# 显示图表
plt.show()
3. 柱状图(Bar Plot)
用于比较不同类别的数据(离散数据)。
# 准备数据
categories = ['A', 'B', 'C', 'D', 'E'] # 类别
values1 = [23, 45, 56, 12, 34] # 第一组数据
values2 = [18, 32, 49, 15, 28] # 第二组数据
# 设置柱状图位置
x = np.arange(len(categories)) # 类别索引(0,1,2,3,4)
width = 0.35 # 柱宽
# 绘制柱状图
plt.bar(x - width/2, values1, width, label='数据1', color='skyblue')
plt.bar(x + width/2, values2, width, label='数据2', color='orange')
# 添加装饰
plt.title('两组数据的柱状图对比', fontsize=14)
plt.xlabel('类别', fontsize=12)
plt.ylabel('数值', fontsize=12)
plt.xticks(x, categories) # 用类别名替换x轴刻度
plt.legend()
plt.grid(axis='y', alpha=0.3) # 仅显示y轴网格
# 显示图表
plt.show()
4. 直方图(Histogram)
用于展示连续数据的分布特征(频率分布)。
# 准备数据(正态分布随机数)
np.random.seed(42)
data = np.random.randn(1000) # 1000个符合标准正态分布的数
# 绘制直方图
plt.hist(data, bins=30, density=True, alpha=0.7, color='green') # bins:分箱数;density:归一化
# 叠加理论概率密度曲线
x = np.linspace(-4, 4, 100)
pdf = (1 / np.sqrt(2 * np.pi)) * np.exp(-x**2 / 2) # 标准正态分布概率密度函数
plt.plot(x, pdf, color='red', linewidth=2, label='理论分布')
# 添加装饰
plt.title('正态分布数据的直方图', fontsize=14)
plt.xlabel('数值', fontsize=12)
plt.ylabel('频率', fontsize=12)
plt.legend()
plt.grid(alpha=0.3)
# 显示图表
plt.show()
5. 饼图(Pie Chart)
用于展示各部分占总体的比例。
# 准备数据
labels = ['苹果', '香蕉', '橙子', '葡萄'] # 类别
sizes = [35, 25, 20, 20] # 占比(总和100)
explode = (0.1, 0, 0, 0) # 突出第一部分(苹果)
colors = ['red', 'yellow', 'orange', 'purple']
# 绘制饼图
plt.pie(sizes, explode=explode, labels=labels, colors=colors,
autopct='%1.1f%%', # 显示百分比(保留1位小数)
shadow=True, # 阴影效果
startangle=90) # 起始角度(90度:从顶部开始)
# 设置为正圆形(默认可能椭圆)
plt.axis('equal')
# 添加标题
plt.title('水果销量占比', fontsize=14)
# 显示图表
plt.show()
6. 子图(Subplots)
在一个画布上绘制多个图表,便于对比。
# 创建2行2列的子图(共4个子图)
fig, axes = plt.subplots(2, 2, figsize=(10, 8)) # figsize:画布大小(宽×高)
# 子图1:线图
x = np.linspace(0, 10, 100)
axes[0, 0].plot(x, np.sin(x), color='blue')
axes[0, 0].set_title('sin(x)')
# 子图2:散点图
axes[0, 1].scatter(np.random.randn(50), np.random.randn(50), color='red')
axes[0, 1].set_title('随机散点')
# 子图3:柱状图
axes[1, 0].bar(['A', 'B', 'C'], [10, 20, 15], color='green')
axes[1, 0].set_title('柱状图')
# 子图4:直方图
axes[1, 1].hist(np.random.randn(1000), bins=20, color='orange')
axes[1, 1].set_title('直方图')
# 调整子图间距
plt.tight_layout()
# 显示图表
plt.show()
四、进阶技巧
-
中文显示:matplotlib 默认不支持中文,需手动设置字体:
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"] # 支持中文 plt.rcParams["axes.unicode_minus"] = False # 解决负号显示问题 -
保存图片:使用
plt.savefig()保存为高清图片:plt.savefig('my_plot.png', dpi=300, bbox_inches='tight') # dpi:分辨率;bbox_inches:去除白边 -
样式设置:使用内置样式美化图表:
plt.style.use('seaborn-v0_8-whitegrid') # 应用seaborn风格 # 其他可选样式:'ggplot'、'bmh'、'grayscale'等
五、总结
matplotlib.pyplot 是 Python 数据可视化的基础工具,核心特点是:
- 支持多种图表类型,满足不同可视化需求。
- 高度可定制,从颜色、线条到标签、图例均可调整。
- 与 NumPy、Pandas 等数据处理库无缝配合。
掌握它可以帮助你快速将数据转化为直观的图表,无论是日常分析还是学术报告都非常实用。
更多推荐


所有评论(0)