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

Matplotlib 模块入门

        Python 中有个非常实用的可视化库 ——Matplotlib。数据可视化是数据分析中不可或缺的环节,而 Matplotlib 作为 Python 的 2D 绘图库,能帮助我们生成高质量的图表,让数据更直观、更有说服力。接下来,我们将从 Matplotlib 的概述、图表的基本设置到常用图表的绘制,做个介绍。

一、Matplotlib 模块的概述

1. 了解 Matplotlib 模块

Matplotlib 是一个功能强大的 Python 2D 绘图库,它支持多种硬拷贝格式和跨平台的交互式环境,能生成出版物级别的图形。无论是简单的折线图、柱状图,还是复杂的热力图、雷达图,Matplotlib 都能轻松应对。只需几行代码,就能将枯燥的数据转化为清晰直观的图表,让数据背后的规律和趋势一目了然。

比如,我们可以用它绘制学生成绩对比图、销售额趋势图、各省销量占比图等,这些图表能帮助我们快速理解数据特征,为决策提供支持。

2. Matplotlib 模块的安装

在使用 Matplotlib 之前,我们需要先安装它。安装方法很简单,主要有以下几种:

  1. 使用 pip 工具安装:打开 “命令提示符” 或 “Anaconda Prompt” 窗口,输入命令pip install matplotlib,按回车即可完成安装。
  2. 在 Pycharm 开发环境中安装:通过 Pycharm 的包管理工具,搜索 “matplotlib” 并安装,方便快捷。

安装完成后,我们就可以在代码中通过import matplotlib.pyplot as plt引入模块,开始绘图了。

3. 体验 Matplotlib 可视化图表

接下来,我们通过一个简单的例子来体验一下 Matplotlib 的绘图功能。绘制第一张图表只需三步:

  1. 引入 pyplot 模块:import matplotlib.pyplot as plt
  2. 使用plot()方法绘制图表:plt.plot([1, 2, 3, 4, 5])
  3. 使用show()函数显示图表:plt.show()

运行这段代码,我们就能看到一个简单的折线图。在 Jupyter Notebook 中,同样可以通过类似的代码绘制图表,非常便捷。

二、图表的基本设置

要绘制出美观且信息完整的图表,需要对图表进行一系列基本设置。下面我们介绍一些常用的设置方法。

1. 基本绘图 ——plot()函数

plot()函数是 Matplotlib 中最基础的绘图函数,用于绘制折线图。它的语法为:

matplotlib.pyplot.plot(x, y, format_string, **kwargs)

  1. xy分别为 x 轴和 y 轴的数据。
  2. format_string用于控制曲线的格式,包括颜色、线条样式和标记样式。
  3. ** kwargs为其他键值参数,用于进一步设置曲线属性。

例如,我们可以通过plt.plot(x, y, color='r', linestyle='--', marker='o')绘制一条红色、虚线、带圆形标记的折线。

其中,颜色可以通过字母(如'r'表示红色、'b'表示蓝色)、十六进制值(如'#FFFF00'表示黄色)或灰度值(如0.5)设置;线条样式有实线('-')、双划线('--')、点划线('-.')、虚线(':')等;标记样式包括点(.)、实心圆('o')、三角('v' '^'等)、正方形('s')等。

2. 设置画布 ——figure()函数

画布是图表的基础,figure()函数用于创建自定义画布,其语法为:

matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)

  1. num:图像的编号或名称。
  2. figsize:指定画布的宽和高(单位为英寸)。
  3. dpi:绘图对象的分辨率,数值越大,画布越清晰。
  4. facecoloredgecolor:分别设置画布的背景颜色和边框颜色。
  5. frameon:是否显示边框,默认为True

例如,plt.figure(figsize=(5, 3), facecolor='yellow')可以创建一个 5×3 英寸的黄色画布。

3. 设置坐标轴 ——xlabel()ylabel()等函数

坐标轴是图表的重要组成部分,合理设置坐标轴能让图表更易读。

  1. 坐标轴标题xlabel()ylabel()函数分别用于设置 x 轴和 y 轴的标题,例如plt.xlabel('20231')plt.ylabel('基础体温')
  2. 坐标轴刻度xticks()yticks()函数用于设置坐标轴的刻度和标签,例如plt.xticks(range(1, 15))将 x 轴刻度设置为 1 到 14 的连续数字。
  3. 坐标轴范围xlim()ylim()函数用于设置坐标轴的取值范围,例如plt.ylim(35, 45)将 y 轴范围设置为 35 到 45。

此外,还可以通过axis()函数设置坐标轴的其他属性,如axis('off')关闭坐标轴,axis('equal')使 x、y 轴长度一致等。

需要注意的是,Matplotlib 默认可能存在中文乱码和负号显示问题,我们可以通过以下代码解决:

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码

plt.rcParams['axes.unicode_minus'] = False    # 解决负号不显示

4. 设置文本标签 ——text()函数

text()函数用于在图表的指定位置添加文本标签,语法为:

matplotlib.pyplot.text(x, y, s, fontdict=None, withdash=False, **kwargs)

  1. xy为文本标签的坐标位置。
  2. s为文本内容。
  3. fontdict用于设置文本的字体样式,如字体大小、颜色等。

例如,在体温折线图中,我们可以用text()函数为每个数据点添加具体的体温值,让数据更清晰。

5. 设置标题和图例 ——title()legend()函数

-** 标题 **:title()函数用于设置图表的标题,语法为plt.title(label, fontdict=None, loc='center', pad=None,** kwargs),其中label为标题文本,loc控制标题的水平位置('center''left''right')。

  1. 图例legend()函数用于添加图例,标识图表中的不同数据系列。可以通过loc参数设置图例的位置(如'upper right'表示右上角),通过ncol参数设置图例的列数等。例如plt.legend(('基础体温',), loc='upper right')

6. 添加注释 ——annotate()函数

annotate()函数用于为图表添加带箭头的注释,突出显示重要数据点,语法为:

plt.annotate(s, xy, *args, **kwargs)

  1. s为注释文本。
  2. xy为被注释的坐标点。
  3. xytext为注释文本的坐标位置。
  4. arrowprops用于设置箭头的样式。

例如,在体温折线图中,我们可以用annotate()函数指示出最高体温的位置,并添加 “最高体温” 的注释。

7. 设置网格线 ——grid()函数

grid()函数用于为图表添加网格线,使数据的读取更方便。例如plt.grid(color='0.5', linestyle='--', linewidth=1)可以添加灰色、虚线、线宽为 1 的网格线。通过axis参数可以控制网格线的方向,如axis='x'只显示 x 轴网格线。

8. 设置参考线 ——axhline()axvline()等函数

  1. axhline()axvline()函数分别用于绘制水平和垂直参考线,无需指定起止点,默认贯穿整个图表。
  2. hlines()vlines()函数也用于绘制参考线,但需要指定起止点。

例如,plt.axhline(y=36.5, color='r', linestyle='--')可以添加一条 y=36.5 的红色虚线作为水平参考线,表示体温的平均值。

9. 选取范围 ——axhspan()axvspan()函数

这两个函数用于在图表中标记出特定的范围:

  1. axhspan(ymin, ymax, facecolor, alpha)用于绘制水平选取范围,yminymax为 y 轴范围的最小值和最大值。
  2. axvspan(xmin, xmax, facecolor, alpha)用于绘制垂直选取范围,xminxmax为 x 轴范围的最小值和最大值。

例如,axhspan(36.5, 37, facecolor='yellow', alpha=0.3)可以标记出体温在 36.5 到 37 度之间的区域。

10. 图表的布局 ——tight_layout()函数

tight_layout()函数用于自动调整图表的布局,避免元素之间的重叠,使图表更美观。只需在显示图表前调用plt.tight_layout()即可。

11. 保存图表 ——savefig()函数

savefig()函数用于将图表保存为图片文件,语法为plt.savefig('image.png'),其中'image.png'为保存的文件名和格式,支持 png、jpg、pdf 等多种格式。需要注意的是,savefig()函数应放在show()函数之前,否则可能保存为空图片。

三、绘制常用的图表

Matplotlib 支持多种类型的图表,下面我们介绍一些常用图表的绘制方法。

1. 散点图 ——scatter()函数

散点图用于展示两个变量之间的关系,scatter()函数的语法为:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, ...)

  1. xy为数据点的坐标。
  2. s为标记的大小,c为标记的颜色。
  3. marker为标记的样式。

例如,我们可以用散点图分析销售收入与广告费的相关性,通过观察点的分布判断两者是否存在正相关或负相关关系。

2. 折线图 ——plot()函数

折线图常用于展示数据随时间或其他连续变量的变化趋势,我们可以用plot()函数绘制。例如,绘制学生语数外各科成绩的折线图,对比不同学生的成绩差异和各科的整体表现。

3. 柱形图 ——bar()函数

柱形图用于比较不同类别数据的大小,bar()函数的语法为:

matplotlib.pyplot.bar(x, height, width, bottom=None, align='center', ...)

  1. x为 x 轴的类别数据。
  2. height为柱子的高度(y 轴数据)。
  3. width为柱子的宽度。

我们可以绘制简单的柱形图展示单一类别数据,也可以绘制多柱形图对比不同平台、不同年份的数据,例如 2016—2022 年各平台图书销售额分析图。

4. 直方图 ——hist()函数

直方图用于展示数据的分布情况,hist()函数的语法为:

matplotlib.pyplot.hist(x, bins=None, range=None, density=None, ...)

  1. x为要分析的数据集。
  2. bins为统计数据的区间分布。
  3. densityTrue时显示频率分布,False时显示频数分布。

例如,用直方图分析学生数学成绩的分布情况,观察成绩集中在哪个分数段。

5. 饼形图 ——pie()函数

饼形图用于展示各部分占总体的比例,pie()函数的语法为:

matplotlib.pyplot.pie(x, explode=None, labels=None, autopct=None, ...)

  1. x为各部分的比例数据。
  2. explode用于设置某部分离中心的距离,突出显示该部分。
  3. labels为各部分的标签。
  4. autopct用于设置百分比的显示格式。

我们可以绘制基础饼形图、分裂饼形图(突出某一部分)、带阴影的饼形图,还可以绘制环形图和内嵌环形图,例如分析 2023 年 1 月各省销量占比情况。

6. 面积图 ——stackplot()函数

面积图用于展示数据的累积趋势,stackplot()函数可以绘制标准面积图和堆叠面积图。堆叠面积图能同时展示多个数据系列的变化趋势和总体的变化,例如分析 2016—2022 年线上各平台图书销售情况。

7. 箱形图 ——boxplot()函数

箱形图用于展示数据的分布特征,包括中位数、四分位数、异常值等,boxplot()函数的语法为:

matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, ...)

通过箱形图,我们可以快速判断数据的分布是否对称、是否存在异常值。例如,分析客人总消费数据中的异常值,异常值的判断标准为:大于Q3 + 1.5(Q3 - Q1)或小于Q1 - 1.5(Q3 - Q1)(其中 Q1 为下四分位数,Q3 为上四分位数)。

8. 热力图 ——imshow()函数

热力图通过颜色的深浅展示数据的大小差异,适合展示矩阵形式的数据。例如,用热力图对比分析学生各科成绩,颜色越深表示成绩越高,直观呈现学生的优势和劣势科目。

9. 雷达图 ——polar()函数

雷达图用于展示多个维度的数据,将各维度的数据绘制在极坐标上,形成多边形,便于比较整体水平和各部分的关系。例如,分析男生女生各科平均成绩的差异,判断不同性别的学生在科目上的优势差异。

10. 气泡图 ——scatter()函数

气泡图是散点图的扩展,通过气泡的大小表示第三个变量的值。例如,分析成交商品件数与访客数的关系,气泡越大表示销售额越高。

11. 棉棒图 ——stem()函数

棉棒图用于绘制离散有序的数据,在每个 x 位置绘制从基线到 y 的垂直线,并在 y 处绘制标记。例如,展示某组离散数据的分布情况。

12. 误差棒图 ——errorbar()函数

误差棒图用于展示数据的误差范围,在折线图或散点图的基础上添加误差线。例如,绘制带误差的实验数据,展示数据的不确定性。

总结

我们介绍了 Matplotlib 模块的基础知识,包括模块的概述、安装方法,图表的基本设置(如画布、坐标轴、标题、图例等),以及 12 种常用图表的绘制方法。在实际应用中,我们可以根据数据特点和分析需求选择合适的图表类型,并通过调整各种参数使图表更美观、信息更完整。

http://www.dtcms.com/a/276312.html

相关文章:

  • 非欧几里得空间图卷积算子设计:突破几何限制的图神经网络新范式
  • Linux系统中部署Redis详解
  • python作业2
  • 【时间之外】AI在农机配件设计场景的应用
  • 【详解ProTable源码】高级筛选栏如何实现一行五列
  • Elasticsearch 的 `modules` 目录
  • AMD 锐龙 AI MAX+ 395 处理器与端侧 AI 部署的行业实践
  • 【华为OD】MVP争夺战2(C++、Java、Python)
  • 拼多多电商运营技巧---价格体系设置
  • 数据的计算与格式化
  • [Python] Flask 多线程绘图时报错“main thread is not in main loop”的解决方案
  • SuperClaude命令参考手册:AI编程革命中的20个核心指令详解
  • JavaEE多线程——锁策略 CAS synchronized优化
  • UI前端大数据可视化新探索:如何利用色彩心理学提升数据传达效果?
  • [vroom] 启发式算法(路径评估) | 局部搜索优化引擎 | 解决方案输出解析
  • 单向链表反转 如何实现
  • 蓝牙BT UUID的含义以及使用方法案例说明
  • 第十八天,7月12日,八股
  • 【MySQL笔记】事务的ACID特性与隔离级别
  • 动态规划基本操作
  • AutoGen框架官方文档梳理-完整学习指南
  • Java中的方法传参机制
  • 【工程数学基础】条件极值与拉格朗日乘数法
  • uniapp弹出手机键盘,布局被顶飞,导致页面混乱问题
  • 使用包管理工具CocoaPods、SPM、Carthage的利弊与趋势
  • C#与FX5U进行Socket通信
  • 数据结构之并查集和LRUCache
  • OGC:开放地理空间联盟简介
  • YOLO家族内战!v5/v8/v10谁才是你的真命天子?(附保姆级选择指南)
  • SpringAI实现保存聊天记录到redis中