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.pswp.cn/pingmian/88586.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/88586.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/88586.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 3169.无需开会的工作日:排序+一次遍历——不需要正难则反,因为正着根本不难

【LetMeFly】3169.无需开会的工作日:排序一次遍历——不需要正难则反,因为正着根本不难 力扣题目链接:https://leetcode.cn/problems/count-days-without-meetings/ 给你一个正整数 days,表示员工可工作的总天数(从第…

VUE3 el-table 主子表 显示

在Vue 3中,实现主子表(主从表)的显示通常涉及到两个组件:一个是主表(Master Table),另一个是子表(Detail Table)。我们可以使用el-table组件来实现这一功能。这里&#x…

张量数值计算

一.前言前面我们介绍了一下pytorch还有张量的创建,而本章节我们就来介绍一下张量的计算,类型转换以及操作,这个是十分重要的,我们的学习目标是:掌握张量基本运算、掌握阿达玛积、点积运算 掌握PyTorch指定运算设备。Py…

部署项目频繁掉线-----Java 进程在云服务器内存不足被 OOM Killer 频繁杀死-----如何解决?

一、查询系统日志grep -i "java" /var/log/messages执行这条命令,检查系统日志里是否有 Java 进程被 OOM Killer 杀死的记录。日志中反复出现以下内容:Out of memory: Killed process 3679325 (java) total-vm:2947000kB, anon-rss:406604kB..…

【保姆级教程】基于anji-plus-captcha实现行为验证码(滑动拼图+点选文字),前后端完整代码奉上!

前言 验证码作为Web应用的第一道安全防线,其重要性不言而喻。但你是否还在为以下问题烦恼: 传统字符验证码用户体验差,识别率低?验证码安全性不足,轻易被爬虫破解?前后端对接繁琐,集成效率低&…

HTML-八股

1、DOM和BOM DOM是表示HTML或者XML文档的标准的对象模型,将文档中每个组件(元素、属性等)都作为一个对象,使用JS来操作这个对象,从而动态改变页面内容,结合等。 DOM是以树型结构组织文档内容,树…

ADI的EV-21569-SOM核心板和主板转接卡的链接说明

ADI提供给客户很多DSP的核心板,比如EV-21569-SOM,EV-21593-SOM,EV-SC594-SOM等,非常多,但是没有底板,光一个核心板怎么用呢?于是我就在想,我的21569评估板就有通用底板,能…

基于 Redisson 实现分布式系统下的接口限流

在高并发场景下,接口限流是保障系统稳定性的重要手段。常见的限流算法有漏桶算法、令牌桶算法等,而单机模式的限流方案在分布式集群环境下往往失效。本文将介绍如何利用 Redisson 结合 Redis 实现分布式环境下的接口限流,确保集群中所有节点的…

ubuntu播放rosbag包(可鼠标交互)

1 前言 众所周知,ubuntu中播放bag包最主要的工具是rviz,然而rviz有一个无法忍受的缺陷就是不支持鼠标回滚,并且显示的时间的ros时间,不是世界时间,因此在遇到相关bug时不能与对应的世界时间对应。基于以上&#xff0c…

一文理解缓存的本质:分层架构、原理对比与实战精粹

📖 推荐阅读:《Yocto项目实战教程:高效定制嵌入式Linux系统》 🎥 更多学习视频请关注 B 站:嵌入式Jerry 一文理解缓存的本质:分层架构、原理对比与实战精粹 “缓存让系统飞起来”——但每一层缓存有何不同?…

【离线数仓项目】——电商域DIM层开发实战

摘要本文主要介绍了电商域离线数仓项目中DIM层的开发实战。首先阐述了DIM层的简介、作用、设计特征、典型维度分类以及交易支付场景下的表示例和客户维度表设计。接着介绍了DIM层设计规范,包括表结构设计规范、数据处理规范以及常见要求规范。然后详细讲解了DIM层的…

Unreal Engine 自动设置图像

void UYtGameSettingSubsystem::RunHardwareBenchmark(int32 WorkScale, float CPUMultiplier, float GPUMultiplier) {UGameUserSettings* UserSettings UGameUserSettings::GetGameUserSettings();if (UserSettings){// 运行基准测试(异步操作,可能需…

使用Spring Boot和PageHelper实现数据分页

在Spring Boot项目中&#xff0c;利用PageHelper插件可以轻松实现数据分页功能。以下是具体的实现步骤和代码示例。添加依赖在项目的pom.xml文件中添加PageHelper和MyBatis的依赖。<dependency><groupId>com.github.pagehelper</groupId><artifactId>p…

【IT-Infra】从ITIL到CMDB,配置管理,资产管理,物理机与设备管理(含Infra系列说明)

【IT-Infra】从ITIL到CMDB&#xff0c;配置管理&#xff0c;资产管理&#xff0c;物理机与设备管理&#xff08;含Infra系列说明&#xff09; 文章目录序&#xff1a;Infra系列说明1、ITIL 信息技术基础架构库&#xff08;起源&#xff09;2、CMDB 配置管理数据库&#xff08;I…

vue使用printJS实现批量打印及单个打印 避免空白页

本文介绍了使用print-js库实现批量打印功能的实现方法。通过安装print-js依赖后,创建一个batchPrintAction方法,该方法接收选中行数据,生成包含多个标签页的HTML字符串。每个标签页以表格形式展示6个数据字段,并设置了80mm50mm的标签尺寸。方法使用PrintJS进行打印,配置了…

C++ 选择排序、冒泡排序、插入排序

选择排序&#xff1a;是一种简单直观的排序算法&#xff0c;每次均是选择最小&#xff08;大&#xff09;的元素进行排序。选择排序算法思想&#xff1a;1 在未排序序列中找到最小&#xff08;大&#xff09;元素&#xff0c;存放到排序序列的起始位置2 再从剩余未排序元素中继…

Linux入门篇学习——Linux 编写第一个自己的命令,make 工具和 makefile 文件

目录 一、Linux 编写第一个自己的命令 1.命令的概念 2.定义一个自己的命令 二、make 工具和 makefile 文件 1.使用 make 工具 2.makefile文件 一、Linux 编写第一个自己的命令 1.命令的概念 命令就是可执行程序。 比如说我们输入 ls -al &#xff0c;ls 就是可执行程序的…

实验一 接苹果

主要步骤苹果树制作&#xff08;苹果与篮子的制作同理&#xff09;为苹果添加标签相机位置设置与游戏面板长宽比设置&#xff08;16:9&#xff09;苹果下落设置&#xff08;将苹果从平抛运动改为垂直下落&#xff09;通过设置物理图层并更改碰撞矩阵表实现通过PlayerPrefs实现游…

Nginx服务器集群:横向扩展与集群解决方案

横向扩展&#xff1a;基础概念 在深入了解Nginx的横向扩展细节之前&#xff0c;首先理解横向扩展的含义及其重要性。横向扩展是指通过增加服务器数量来分散负载并提升整体性能。这与纵向扩展形成对比&#xff0c;纵向扩展是指在单个服务器上增加更多资源&#xff08;如CPU、内…

缺陷的生命周期(Bug Life Cycle)是什么?

一、缺陷生命周期的定义缺陷生命周期是指一个Bug从被发现到最终关闭的完整流程&#xff0c;反映了缺陷在不同角色&#xff08;测试、开发、产品等&#xff09;间的流转状态。它是软件测试流程的核心管理模型&#xff0c;直接影响团队协作效率。二、标准缺陷生命周期阶段以下是通…