当前位置: 首页 > news >正文

Matplotlib数据可视化入门:从基础图表到多图展示

Matplotlib是Python中最著名的数据可视化库,它提供了丰富的绘图功能,可以帮助我们将数据转化为直观的图表。本文将介绍Matplotlib的基础图表绘制方法以及多图展示技巧,非常适合初学者学习。

3.2 Matplotlib轴标签和标题

在绘制图表时,为图表添加适当的轴标签和标题是非常重要的,它能让读者更好地理解图表所表达的信息。

import matplotlib.pyplot as plt
import numpy as np# 创建数据
x = np.linspace(0, 10, 100)
y = np.sin(x)# 绘制图形
plt.plot(x, y)# 添加标题和轴标签
plt.title("正弦函数曲线")  # 图表标题
plt.xlabel("X轴")        # X轴标签
plt.ylabel("Y轴")        # Y轴标签plt.show()

说明

  • title() 函数用于设置图表标题

  • xlabel() 和 ylabel() 分别用于设置X轴和Y轴的标签

  • 这些函数应该在绘图函数(如plot())之后调用

3.3 Matplotlib显示中文问题

默认情况下,Matplotlib可能无法正确显示中文字符,会出现方框或乱码。解决方法有以下几种:

方法一:指定中文字体

plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体
plt.rcParams['axes.unicode_minus'] = False   # 解决负号显示问题plt.title("显示中文标题")
plt.show()

方法二:临时设置字体 

plt.title("显示中文标题", fontproperties="SimHei")
plt.show()

常用中文字体

  • Windows: SimHei(黑体), Microsoft YaHei(微软雅黑)

  • Mac: PingFang SC(苹方), Hiragino Sans GB(冬青黑体)

  • Linux: Noto Sans CJK SC

3.4 Matplotlib绘制网格线

网格线可以帮助我们更准确地读取图表中的数据值。

x = np.linspace(0, 10, 100)
y = np.sin(x)plt.plot(x, y)
plt.title("带网格线的正弦曲线")
plt.grid(True)  # 显示网格线# 可以自定义网格线样式
# plt.grid(True, linestyle='--', alpha=0.5)plt.show()

参数说明

  • linestyle: 网格线样式,如'-', '--', '-.', ':'

  • alpha: 透明度(0-1)

  • color: 网格线颜色

3.5 Matplotlib绘制多图

当我们需要比较多个相关数据集时,将多个图表放在同一画布上是非常有用的。

3.5.1 subplot()方法

subplot()方法通过指定行数、列数和当前子图索引来创建子图。

# 创建2行1列的子图,当前操作第1个子图
plt.subplot(2, 1, 1)  # (行, 列, 索引)
plt.plot(x, np.sin(x))
plt.title("正弦函数")# 切换到第2个子图
plt.subplot(2, 1, 2)
plt.plot(x, np.cos(x))
plt.title("余弦函数")plt.tight_layout()  # 自动调整子图间距
plt.show()

3.5.2 subplots()方法

subplots()方法更现代,可以一次性创建多个子图并返回子图对象的数组。

fig, axes = plt.subplots(2, 2, figsize=(10, 8))  # 2行2列 
# 含义
# figsize 参数接受一个包含两个数字的元组 (宽度, 高度)# 第一个数字 10 表示图形的宽度为10英寸# 第二个数字 8 表示图形的高度为8英寸# 绘制第1个子图
axes[0, 0].plot(x, np.sin(x))
axes[0, 0].set_title("正弦函数")# 绘制第2个子图
axes[0, 1].plot(x, np.cos(x))
axes[0, 1].set_title("余弦函数")# 绘制第3个子图
axes[1, 0].plot(x, np.tan(x))
axes[1, 0].set_title("正切函数")
axes[1, 0].set_ylim(-5, 5)  # 限制Y轴范围# 绘制第4个子图
axes[1, 1].plot(x, np.exp(x))
axes[1, 1].set_title("指数函数")plt.tight_layout()
plt.show()

优点

  • 代码结构更清晰

  • 方便对子图进行统一操作

  • 可以轻松调整整个图形的尺寸

3.6 Matplotlib绘制散点图

散点图用于展示两个变量之间的关系,适合观察数据的分布模式。

# 生成随机数据
np.random.seed(0)
x = np.random.randn(100)
y = np.random.randn(100)
colors = np.random.rand(100)
sizes = 1000 * np.random.rand(100)plt.scatter(x, y, c=colors, s=sizes, alpha=0.7, cmap='viridis')
plt.colorbar()  # 显示颜色条
plt.title("随机散点图")
plt.xlabel("X值")
plt.ylabel("Y值")
plt.show()

参数说明

  • c: 点颜色,可以是单一颜色或颜色序列

  • s: 点大小

  • alpha: 透明度

  • cmap: 颜色映射

3.7 Matplotlib柱形图

柱形图适合比较不同类别之间的数值大小。

labels = ['苹果', '香蕉', '橙子', '梨']
values = [25, 40, 30, 20]plt.bar(labels, values, color=['red', 'yellow', 'orange', 'green'])
plt.title("水果销量")
plt.ylabel("销量(kg)")
plt.show()

变体:分组柱形图 

labels = ['第一季度', '第二季度', '第三季度', '第四季度']
men_means = [20, 35, 30, 35]
women_means = [25, 32, 34, 20]x = np.arange(len(labels))
width = 0.35fig, ax = plt.subplots()
rects1 = ax.bar(x - width/2, men_means, width, label='男性')
rects2 = ax.bar(x + width/2, women_means, width, label='女性')ax.set_ylabel('销量')
ax.set_title('季度销量按性别分组')
ax.set_xticks(x)
ax.set_xticklabels(labels)
ax.legend()plt.show()

3.8 Matplotlib饼图

饼图适合展示各部分占整体的比例。

labels = ['娱乐', '餐饮', '交通', '购物', '其他']
sizes = [15, 30, 20, 25, 10]
explode = (0, 0.1, 0, 0, 0)  # 突出"餐饮"部分plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',shadow=True, startangle=90)
plt.axis('equal')  # 确保饼图是圆形
plt.title("月度支出比例")
plt.show()

参数说明

  • explode: 突出显示某部分

  • autopct: 显示百分比格式

  • shadow: 添加阴影效果

  • startangle: 起始角度

3.9 Matplotlib直方图

直方图用于展示数据的分布情况。

# 生成正态分布数据
data = np.random.randn(1000)plt.hist(data, bins=30, density=True, alpha=0.7, histtype='stepfilled', color='steelblue', edgecolor='none')
plt.title("数据分布直方图")
plt.xlabel("值")
plt.ylabel("频率")
plt.show()

参数说明

  • bins: 柱子数量

  • density: 是否显示为概率密度

  • alpha: 透明度

  • histtype: 直方图类型

总结

本文介绍了Matplotlib中常用的图表类型和绘制方法,包括:

  1. 基础图表元素:轴标签、标题、网格线

  2. 中文显示问题的解决方案

  3. 多图绘制方法:subplot()和subplots()

  4. 常用图表类型:散点图、柱形图、饼图、直方图

掌握这些基础图表绘制方法后,你已经可以完成大部分的数据可视化任务。在实际应用中,可以根据数据特点选择合适的图表类型,并通过调整各种参数使图表更加美观和易读。

学习建议

  • 多动手实践,尝试修改示例代码中的参数

  • 查阅Matplotlib官方文档了解更多参数和功能

  • 学习如何自定义图表样式,如颜色、线型、标记等

希望这篇教程能帮助你快速入门Matplotlib数据可视化!

http://www.lryc.cn/news/574294.html

相关文章:

  • 【AI 测试】测试用例设计:人工智能语言大模型性能测试用例设计
  • MySQL 慢查询日志与 Binlog 启用与故障排查实录
  • 全链接神经网络,CNN,RNN各自擅长解决什么问题
  • HarmonyOS应用开发——层叠布局
  • Deepoc大模型重构核工业智能基座:混合增强架构与安全增强决策技术​
  • MM-AttacKG:一种使用大型语言模型构建攻击图的多模态方法
  • pyhton基础【15】函数进阶一
  • Robyn高性能Web框架系列04:事件、中间件与错误处理
  • 前端跨域解决方案(7):Node中间件
  • 2025年CCF先进音频技术竞赛
  • Node鼠标键盘屏幕控制
  • 【LLaMA-Factory 实战系列】二、WebUI 篇 - Qwen2.5-VL 多模态模型 LoRA 微调保姆级教程
  • Perl语言基础
  • Windows环境Browser-Use平台部署与AI自动化远程访问实现过程
  • Java面试题027:一文深入了解数据库Redis(3)
  • Arrays.asList和 List<String> list = new ArrayList<>();有什么区别
  • C++11的内容
  • 智能生成分析报告系统在危化安全生产监测预警评估中的应用
  • NoSQL 之 Redis 配置与优化
  • 【科技公司的管理】
  • 深度解析 Caffeine:高性能 Java 缓存库
  • ​​MQTT​​通讯:​​物联网
  • 爬虫003----requests库
  • UP COIN:从 Meme 共识走向公链与 RWA 的多元生态引擎
  • VLN论文复现——VLFM(ICRA最佳论文)
  • 如何快速判断Excel文档是否被修改过?Excel多版本比对解决方案
  • 睿是信息携手Arctera,深化服务中国市场,共筑数据管理新未来
  • css元素超过两行隐藏并显示省略号全网独一份
  • 2025年CSS最新高频面试题及核心解析
  • ADIOS2 介绍与使用指南