Python -- Matplotlib库的使用

article/2025/8/29 8:49:47

Matplotlib库的使用

  要点:matplotlib是提供数据绘图功能的第三方库,其pyplot子库主要用于实现各种数据展示图形的绘制。

1. matplotlib.pyplot库概述

  matplotlib.pyplot是matplotlib的子库,引用方式如下:

>>>import matplotlib.pyplot as plt

  为了正确显示中文字体,请用以下代码更改默认设置,其中’SimHei’表示黑体字。

>>>import matplotlib
>>>matplotlib.rcParams['font.family']='SimHei'
>>>matplotlib.rcParams['font.sans-serif']_=['SimHei']

  常见字体名称的中英文对照

字体英文表示字体名称
SimSun宋体
SimHei黑体
KaiTi楷体
Microsoft YaHei微软雅黑
LiSu隶书
FangSong仿宋
YouYuan幼圆
STSong华文宋体
STHeiti华文黑体
Apple LiGothic Medium苹果丽中黑

  matplotlib库由一系列有组织有隶属关系的对象构成,这对于基础绘图操作来说显得过于复杂。因此,matplotib提供了一套快捷命令式的绘图接口函数,即pyplot子模块。pyplot 将绘图所需要的对象构建过程封装在函数中,对用户提供了更加友好的接口。pyplot模块提供一批预定义的绘图函数,大多数函数可以从函数名辨别它的功能。

2. matplotlib.pyplot库解析

  使用plt代替matplotlib.pyplot。plt子库提供了一批操作和绘图函数,每个函数代表对图像进行的一个操作,比如创建绘图区域、添加标注或者修改坐标轴等
  plt子库中包含了4个与绘图区域有关的函数。

函数描述
plt.figure(figsize=None, facecolor=None)创建一个全局绘图区域
plt.axes(rect,axisbg=‘w’)创建一个坐标系风格的子绘图区域
plt.subplot(nrows, ncols,plot_number)在全局绘图区域中创建一个子绘图区域
plt.subplots_adjust()调整子绘图区域的布局

  使用figureO函数创建一个全局绘图区域,并且使它成为当前的绘图对象,figsize
  参数可以指定绘图区域的宽度和高度,单位为英寸。鉴于figure(O函数参数较多,这里采用指定参数名称的方式输入参数。

>>> plt.figure(figsize=(8,4))

  绘制图像之前也可不调用figureO函数创建全局绘图区域,此时,plt子库会自动创建一个默认的绘图区域。显示绘图区域的代码如下:

>>>plt.figure(figsize=(8,4))
>>>plt.show()

  subplot()用于在全局绘图区域内创建子绘图区域,其参数表示将全局绘图区域分成nrows行和ncols列,并根据先行后列的计数方式在plot_number位置生成一个坐标系,实例代码如下,3个参数关系如图9.3所示。其中,全局绘图区域被分割成3×2的网格,其中,在第4个位置绘制了一个坐标系。

>>>plt.subplot(324)
>>>plt.show()

效果如下:
在这里插入图片描述

axes()默认创建一个subplot(111)坐标系,参数rec=[left,bottom,width,height]中4个变量的范围都为[0,1],表示坐标系与全局绘图区域的关系;axisbg指背景色,默认为white。
  subplotO函数的参数关系

>>> plt.axes([0.1,0.1,0.7,0.3],axisbg='y')
>>>>> plt.show()

  plt子库提供了一组读取和显示相关的函数,用于在绘图区域中增加显示内容及读入数据,这些函数需要与其他函数搭配使用。
  plt库的读取和显示函数(共6个)

函数描述
plt.legend()在绘图区域中放置绘图标签(也称图注)
plt.show()显示创建的绘图对象
plt.matshow()在窗口显示数组矩阵
plt.imshow()在axes 上显示图像
plt.imsave()保存数组为图像文件
plt.imread()从图像文件中读取数组

  pyplot模块提供了17个用于绘制“基础图表”的常用函数。

描述操作
plt.polt(x, y, label, color, width)根据x、y数组绘制直、曲线
plt.boxplot(data, notch, position)绘制一个箱型图(Box-plot)
plt.bar(left, height, width, bottom)绘制一个条形图
plt.barh(bottom, width,height, left)绘制一个横向条形图
plt.polar(theta, r)绘制极坐标图
plt.pie(data,explode)绘制饼图
plt.psd(x, NFFT=256, pad_to, Fs)绘制功率谱密度图
plt.specgram(x, NFFT=256,pad_to, F)绘制谱图
plt.cohere (x, y, NFFT=256, Fs)绘制X-Y的相关性函数
plt.scatter()绘制散点图(x、y是长度相同的序列)
plt.step(x, y, where)绘制步阶图
plt.hist(x,bins,normed)绘制直方图
plt.contour(X,Y,Z,N)绘制等值线
plt.vlines()绘制垂直线
plt.stem(x,y,linefmt,markerfmt,basefmt)绘制曲线每个点到水平轴线的垂线
plt.plot_date()绘制数据日期
plt.plotfile()绘制数据后写入文件

  plot()函数是用于绘制直线的最基础的函数,调用方式很灵活,x和y可以是numpy计算出的数组,并用关键字参数指定各种属性。其中,label表示设置标签并在图例(legend)中显示,color表示曲线的颜色,linewidth表示曲线的宽度。在字符串前后添加“$”符号,matplotlib会使用其内置的latex引擎绘制数学公式。
  【例1】绘制基本的三角函数。
  在坐标系中绘制基本的三角函数,代码如下,绘制效果如图9.4所示。

import numpy as np
import matplotlib.pyplot as pltx = np.linspace(0, 6, 100)
y = np.cos(2 * np.pi * x) * np.exp(-x)+0.8
plt.plot(x, y, 'k', color='y', linewidth=5, linestyle="-")
plt.show()

效果如下:
在这里插入图片描述

  plt库有两个坐标体系:图像坐标和数据坐标。图像坐标将图像所在区域左下角视为原点,将x方向和y方向长度设定为1。整体绘图区域有一个图像坐标,每个axes()和 subplot()函数产生的子图也有属于自己的图像坐标。axes()函数参数 rect 指当前产生的子区域相对于整个绘图区域的图像坐标。数据坐标以当前绘图区域的坐标轴为参考,显示每个数据点的相对位置,这与坐标系里面标记数据点一致。
  下表给出了与plt库的坐标轴设置相关的函数。

函数描述
plt.axis(‘v’,'off,‘equal’,‘scaled’,‘tight’,‘image’)获取设置轴属性的快捷方法
plt.xlim(xmin, xmax)设置当前x轴取值范围
plt.ylim(ymin,ymax)设置当前y轴取值范围
plt.xscale()设置x轴缩放
plt.yscale()设置y轴缩放
plt.autoscale()自动缩放轴视图的数据
plt.text(x,y,s,fontdic,withdash)为axes图轴添加注释
plt.thetagrids(angles,labels, fmt, frac)设置极坐标网格theta的位置
plt.grid(on/off)打开或者关闭坐标网格
>>>plt.plot([1,2,6],[1,2,1])
>>>>plt.axis()#获得当前坐标轴范围
(1.0,4.0,1.0,3.0)
>>plt.axis([0,5,0,8]) #4个变量分别是[xmin,xmax,ymin,ymax]
>>>plt.show()#请读者观察输出结果

  下表给出了13个设置坐标系标签的相关函数。

函数描述
plt.figlegend(handles,label,loc)为全局绘图区域放置图注
plt.legend()为当前坐标图放置图注
plt.xlabel(s)设置当前x轴的标签
plt.ylabel(s)设置当前y轴的标签
plt.xticks(array,‘a’,‘b’,‘c’)设置当前x轴刻度位置的标签和值
plt.yticks(array,‘a’,‘b’,‘c’)设置当前y轴刻度位置的标签和值
plt.clabel(cs,v)为等值线图设置标签
plt.get_figlabels()返回当前绘图区域的标签列表
plt.figtext(x, y, s, fontdic)为全局绘图区域添加文字
plt.title()设置标题
plt.suptitle()为当前绘图区域添加中心标题
plt.text(x, y, s,fontdic, withdash)为 坐标图轴添加注释
plt.annotate(note, xy, xytext, xycoords, textcoords, arrowprops)用箭头在指定数据点创建一个注释或一段文本

  【例2】绘制一个带标签的坐标系,代码如下,绘制效果如下图所示。

import numpy as np
import matplotlib.pyplot as plt
import matplotlibmatplotlib.rcParams['font.family'] = 'SimHei'
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
plt.plot([1, 2, 6], [1, 2, 1])
plt.title("坐标系")
plt.xlabel('时间()')
plt.ylabel('范围(m)')
plt.xticks([1,2,3,4,5],[r'$\pi/3$',r'$2\pi/3$',r'$\pi/$',r'$4\pi/3$',r'$5\pi/3$'])
plt.show()

效果如下:
在这里插入图片描述

  plt库提供了3个区域填充函数,对绘图区域填充颜色。

函数描述
fill(x,y,c,color)填充多边形
fill_between(x, y1, y2, where, color)填充两条曲线围成的多边形
fill_betweenx(y, x1, x2, where, hold)填充两条水平线之间的区域

  【例3】带局部阴影的坐标系。
  绘制一个带局部阴影的坐标系,代码如下,绘制效果如图9.6所示。

import matplotlib.pyplot as plt
import numpy as npx = np.linspace(0, 10, 1000)
y = np.cos(2*np.pi*x) * np.exp(-x)+0.8
plt.plot(x, y, 'k', color='y', label="$exp-decay$", linewidth=3)
plt.axis([0, 6, 0, 1.8])
ix = (x>0.8) & (x<3)
plt.fill_between(x, y, 0, where = ix,facecolor = 'grey', alpha=0.25)
plt.text(0.5*(0.8+3), 0.2, r"$\int_a^b f(x)\mathrm{d}x$",horizontalalignment='center')
plt.legend()
plt.show()

效果如下:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/FwtK7EOM.shtml

相关文章

Matplotlib库介绍

目录 一、Matplotlib库介绍 二、基本绘图流程 三、pyplot基础语法 1.创建画布与创建子图 2.添加画布内容 3.保存与展示图形 4.不同图表绘制函数 四、其它相关内容 1.线条颜色(color)的设置 2.线条标记(marker)的设置 3.线条类型(line)的设置 一、Matplotlib库介绍 …

Python Matplotlib库用法笔记

Python Matplotlib库用法笔记 一、了解Matplotlib库1 Matplotlib是什么2 Matplotlib的作用3利用Matplotlib做一个简单的画图3.1matplotlib.pyplot模块3.2画图 4 Matplotlib的三层结构4.1容器层4.2 辅助显示层4.3图像层 二、折线图1 折线图的绘制与显示1.1设置图形的风格 2 设置…

Python之数据可视化——matplotlib系统介绍(一)

matplotlib基础系统介绍 目录 1. Matplotlib概述 2. 讲解Matplotlib核心原理 3. Matplotlib相关基础操作介绍 3.1 创建figure(画布)的方式及完整绘图步骤3.2 线型设置3.3 中文与特殊符号(负号)相关支持设置3.4 图例和网络的设置3.5 坐标轴的设置和相关操作3.6 figure的区域…

Matplotlib下载、安装、简单使用

Matplotlib Matplotlib是一个Python 2D绘图库&#xff0c;它以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形。它可与 NumPy 一起使用&#xff0c;提供了一种有效的 MatLab 开源替代方案&#xff0c;也可用于Python脚本&#xff0c;Python和IPython (opens new win…

Python--Matplotlib(基本用法)

Matplotlib Matplotlib 是Python中类似 MATLAB 的绘图工具&#xff0c;熟悉 MATLAB 也可以很快的上手 Matplotlib。 1. 认识Matploblib 1.1 Figure 在任何绘图之前&#xff0c;我们需要一个Figure对象&#xff0c;可以理解成我们需要一张画板才能开始绘图。 import matplo…

【51单片机】AS608指纹锁设计

文章目录 一、主要功能二、硬件资源1.硬件准备2.硬件连接 三、软件设计1.软件结构2.主要代码 四、实验现象联系作者 一、主要功能 系统运行后&#xff0c;LCD显示指纹锁主界面&#xff0c;显示模块指纹库剩余容量和指纹对比等级数。如果已经添加了指纹的话&#xff0c;直接在主…

基于STM32的多功能门禁系统(AS608指纹识别、密码解锁、刷卡解锁)

目录 一、项目功能 二、视频 三、原理图 4、材料选择 5、部分程序 资料下载地址&#xff1a;基于STM32的多功能门禁系统 一、项目功能 1、AS608指纹解锁&#xff1b;可以录入、删除、验证指纹&#xff1b; 2、密码解锁&#xff1b;可以密码验证、修改密码和保存密码&a…

AS608指纹模块的上位机检测

​​​​​引言 最近在搞这个基于STC51的指纹锁&#xff0c;目前已经差不多完成&#xff0c;对于我这个小白来说还是有点难度的。上位机检测是之前做的&#xff0c;现在也算是回忆总结一下吧&#xff01; 正文 AS608指纹模块的介绍 PCB&#xff1a; 具体操作 第一步 将AS…

Arduino Nano+AS608指纹门禁系统

100元制作宿舍指纹门禁系统 效果图&#xff1a;硬件清单各个模块连接程序流程图驱动文件以及配置烧录环境驱动文件配置编译器 局部源码**演示视频**更新内容完整源码下载&#xff1a; 效果图&#xff1a; 这里用的是电容式的AS608指纹模块 硬件清单 名称用途Arduino Nano开发…

ATECC608A的完美兼容国产替代芯片

工程师强烈推荐的一款ATECC608A的完美兼容替代加密芯片&#xff1a;MOD8ID MOD8ID是一款MODSEMI推出的高安全等级加密芯片&#xff0c;真正做到了软硬件P2P兼容ATECC608系列&#xff0c;也就是说不需要改变主机端原有的Cryptolib库&#xff0c;甚至无需更改任何代码和硬件即可…

基于stm32f103c8t6及AS608-----指纹锁项目

一、关于本项目&#xff1a; 本文适合于初学者&#xff0c;大佬还请勿喷&#xff0c;欢迎提出意见&#xff0c;有纰漏之处将及时纠正。在浅学了stmf103c8t6后&#xff0c;想着依据现在所拥有的知识和能力做一个小项目。在了解到有关宿舍指纹锁的相关内容&#xff0c;对该功能的…

【基于STM32F103+AS608的智能打卡系统】

基于STM32F103AS608的智能打卡系统 工程源码链接 链接&#xff1a;https://pan.baidu.com/s/1RRc03nTrcTp--xfQnv2r9Q?pwdin9p 提取码&#xff1a;in9p --来自百度网盘超级会员V5的分享一、功能描述基于STM32F013AS608实行的智能打卡系统 1》进行打卡功能 2》指纹添加&…

as608指令c语言,单片机+AS608的使用,并带程序

之前在AS608的使用上走了许多弯路,这次希望身为初学者的我们可以吸取经验,特此介绍AS608. 指纹模块AS608的使用: 1脚红线:Vcc,连接3.3V电源供电,勿接3.3V以上电源 2脚黄线:接单片机串口TX端 3脚白线:接单片机串口RX端 4脚黑线:GND,3.3V电源的GND 5脚蓝线:模块触摸…

STM32+AS608指纹模块

前言&#xff1a;这个串口逻辑有点问题&#xff0c;要是用串口做命令输入端的话要自己改一下串口逻辑&#xff0c;串口只是调试能不能用指纹模块的功能&#xff0c;后期不需要串口发命令所以没怎么写串口的命令逻辑 1.AS608的资料挺全的&#xff0c;就是按照他给的来写命令&…

AS608与单片机握手失败、与上位机通讯失败

简言&#xff1a;本人在使用AS608模块时遇到了握手失败、通讯失败的问题&#xff0c;尝试网上各种方法未果后&#xff0c;换了一个AS608模块&#xff0c;问题解决。 一、与单片机握手失败 检查代码中的波特率是否为9600&#xff0c;再通过上位机将AS608的波特率改为与代码相同…

vue+vantUI实现单选、多选题(上一题、下一题)

vue+vantUI实现单选、多选题(上一题、下一题) <template><div class="exam-online"><div class="table-list2"><div v-for="(item,index) in questionList" :key="index"><div v-if="currentNum===…

答题微信小程序实现(4):数据库题库的调用/上一题、下一题/题量length的获取

不积跬步无以至千里&#xff0c;不计小流无以成江海。 本来想直接上选择题的&#xff0c;但步子就有点太大了&#xff0c;不是一点点来的。选择题除了题库的调用外&#xff0c;还需要判断答案对错&#xff0c;涉及到if语句&#xff0c;这个if语句应该单独写一个&#xff0c;对…

vue实现调查问卷一页一题,上一题下一题形式

使用了vant组件的radio 单选框 官网https://youzan.github.io/vant/#/zh-CN/radio 效果图 效果图 做出来的效果图就是上面那样 一页一题 附上代码&#xff1a; <template><div class"second"><!-- 问卷题 --><div v-for"(item,index) in…

leetcode每日一题

目录 &#x1f3c6;重新格式化电话号码 &#x1f453;①麻烦解法 &#x1f453;②使用库函数降维打击 每日鸡汤&#xff1a; &#x1f680;有志者自有千计万计&#xff0c;无志者只感千难万难。 &#x1f3c6;重新格式化电话号码 给你一个字符串形式的电话号码 number 。n…

题题题题题1

js 基本数据类型 7 种原始类型Boolean、Number、String、Null、Undefined、Symbol&#xff08;es6&#xff09;、BigInt、Object Symbol的理解 symbol是在es6中引入的基本数据类型、它表示的是一个独一无二的值&#xff0c;主要是来解决命名冲突的问题&#xff0c;它的使用场…