Python Matplotlib库用法笔记

article/2025/8/29 8:56:07

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 设置画布属性
      • 2.1 代码示例
    • 3 图片的保存
    • 4 设置辅助显示层
      • 4.1 自定义x,y刻度
      • 4.2 添加网格显示
      • 4.3添加描述信息
    • 5 设置图像层
      • 5.1 再添加一条折线
    • 6 多个坐标系显示折线图
  • 三、散点图
    • 3.1散点图的绘制
  • 四、柱状图
    • 4.1一个类别单个柱状图
    • 4.2一个类别多个柱状图
  • 五、直方图
    • 5.1 直方图与柱状图的区别
    • 5.2 直方图的绘制
  • 六、饼图
    • 6.1 饼图的绘制

用于日常学习的积累,如有不足请多多指教。

一、了解Matplotlib库

1 Matplotlib是什么

Matplotlib可以看成是3个缩写单词拼接而成:
·mat(matrix) 矩阵
·plot 绘图
·lib(library)库

Matplotlib 是一个 Python 的二维图表库。

2 Matplotlib的作用

将数据可视化,是数据更加置换

3利用Matplotlib做一个简单的画图

3.1matplotlib.pyplot模块

matplotlib.pyplot模块包含了一系列类似于matlab的画图函数。

import matplotlib.pyplot as plt

3.2画图

import matplotlib.pyplot as pltplt.figure() #创建画布
plt.plot([1, 2, 3, 4, 5, 6], [1, 4, 9, 16, 25, 36]) #绘制图像
plt.show()	#显示图像

利用Matplotlib做一个简单的画图

4 Matplotlib的三层结构

4.1容器层

  1. 画板层Canvas(位于最底层,一般用户接触不到)
    位于最底层的系统层,充当画板的角色。
  2. 画布层Figure(在Canvas层之上)
    是用户操作的第一层应用层,充当画布的角色。
plt.figure()
  1. 绘图区/坐标系Axes(在Figure层之上)
    应用层的第二层。
plt.subplots()
  1. 相互关系
  • 一个figure可以包含多个axes,一个axes只能属于一个figure。
  • 一个axes(绘图区/坐标系)可以包含多个axis(坐标轴)。

4.2 辅助显示层

辅助显示层为Axes(绘图区)内的除了根据数据绘制出的图像以外的内容,主要包括Axes外观(facecolor)、边框线(spines)、坐标轴(axis)、坐标轴名称(axis label)、坐标轴刻度(tick)、坐标轴刻度标签(tick label)、网格线(grid)、图例(legend)、标题(title)等内容。

4.3图像层

图像层指Axes内通过plot、scatter、bar、histogram、pie等函数根据数据绘制出的图像。

二、折线图

1 折线图的绘制与显示

  1. 折线图绘制的步骤
    1. 创建画布
    2. 绘制图像
    3. 显示图像
      具体和上面的做一个简单的画图的代码一致:
import matplotlib.pyplot as pltplt.figure() #创建画布
plt.plot([1, 2, 3, 4, 5, 6], [1, 4, 9, 16, 25, 36]) #绘制图像
plt.show()	#显示图像

利用Matplotlib做一个简单的画图

1.1设置图形的风格

plt.plot(x,y,color='k',linestyle=':') 
#color设置线条颜色
#linestyle设置线条风格

在这里插入图片描述

对上述代码进行修改:

import matplotlib.pyplot as pltx=[1,2,3,4,5,6]
y=[1,4,9,16,25,36]plt.figure() #创建画布plt.plot(x,y,color='k',linestyle=':') #绘制图像plt.show() #显示图像

结果:
在这里插入图片描述

2 设置画布属性

plt.figure(figsize=(),dpi=)
#figsize:指定图的长宽
#dpi:图像的清晰度

2.1 代码示例

import matplotlib.pyplot as pltplt.figure(figsize=(5,5),dpi=100) #创建画布
plt.plot([1, 2, 3, 4, 5, 6], [1, 4, 9, 16, 25, 36]) #绘制图像
plt.show()	#显示图像

设置画布属性

3 图片的保存

import matplotlib.pyplot as pltplt.figure(figsize=(5,5),dpi=100) #创建画布
plt.plot([1, 2, 3, 4, 5, 6], [1, 4, 9, 16, 25, 36]) #绘制图像plt.savefig("1.png") #保存在相对路径上plt.show() #显示图像

注意:plt.savefig(path)不能写在plt.show() 之后。(plt.show()会释放figgure的资源,此时在保存图片就是空图片)

4 设置辅助显示层

4.1 自定义x,y刻度

#自定义x轴
plt.xticks(x,tick labels) #刻度标签(tick labels)可以对应替换x
#自定义y轴
plt.yticks(y,tick labels) #刻度标签(tick labels)可以对应替换y
  • 代码示例:
import matplotlib.pyplot as pltx=[1,2,3,4,5]
y=[1,4,9,16,25]plt.figure(figsize=(5,5),dpi=100) 
plt.plot(x,y)plt.xticks(x,["一","二","三","四","五"])plt.show()

结果:
在这里插入图片描述
注意:默认字体不支持中文,会变成上图的白色框框。

import matplotlib.pyplot as pltx=[1,2,3,4,5]
y=[1,4,9,16,25]plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示问题plt.figure(figsize=(5,5),dpi=100) 
plt.plot(x,y)
plt.xticks(x,["一","二","三","四","五"])plt.show()

结果:
在这里插入图片描述

4.2 添加网格显示

plt.grid(True,linestyle,alpha)
#linestyle是指线条风格
#alpha是指透明度
  • 代码示例:
import matplotlib.pyplot as pltx=[1,2,3,4,5]
y=[1,4,9,16,25]plt.figure(figsize=(5,5),dpi=100) 
plt.plot(x,y)plt.grid(True,linestyle="--",alpha=0.8)	#添加网格显示plt.show()

结果:
在这里插入图片描述

4.3添加描述信息

plt.xlabel(str)
plt.ylabel(str)
plt.title(str)
  • 代码示例:
import matplotlib.pyplot as pltx=[1,2,3,4,5]
y=[1,4,9,16,25]plt.figure(figsize=(5,5),dpi=100) 
plt.plot(x,y)plt.xlabel("x")
plt.ylabel("x的平方")
plt.title("x平方的函数图像")
plt.grid(True,linestyle="--",alpha=0.8)plt.show()

结果:
x平方的函数图像

5 设置图像层

5.1 再添加一条折线

再次使用plt.plot()就可以再添加一条曲线。
其中,可以在plot()中设置对应曲线的标签:

plt.plot(x,y_2x,label='2x') 

并加入以下图像层的代码将其展示出来:

plt.legend()
  • 代码示例:
import matplotlib.pyplot as pltx=[0,1,2,3,4,5]
y_2x=[2*i for i in range(6)]
y_3x=[3*i for i in range(6)]#创建画布
plt.figure(figsize=(5,5),dpi=100) 
#绘制图像
plt.plot(x,y_2x,label='2x') 
plt.plot(x,y_3x,label='3x') #再添加一条折线plt.legend()plt.show() #显示图像

结果:
在这里插入图片描述

6 多个坐标系显示折线图

figure, axes = plt.subplots(nrows=1, ncols=2)
#nrows:行
#ncols:列

注意:此时为面向对象的编程,注意代码的不同。

  • 代码示例:
import matplotlib.pyplot as pltx=[0,1,2,3,4,5]
y_2x=[2*i for i in range(6)]
y_3x=[3*i for i in range(6)]#创建画布
#plt.figure(figsize=(5,5),dpi=100) 
figure, axes = plt.subplots(nrows=1, ncols=2,figsize=(10,5),dpi=100)#绘制图像
#plt.plot(x,y_2x,label='2x') 
axes[0].plot(x,y_2x,label='2x') 
#plt.plot(x,y_3x,label='3x') 
axes[1].plot(x,y_3x,label='3x') #显示图例
#plt.legend()
axes[0].legend()
axes[1].legend()#修改刻度
axes[0].set_xticks(x[::1])
axes[0].set_yticks(range(0,20)[::2])
axes[1].set_xticks(x[::1])
axes[1].set_yticks(range(0,20)[::2])#添加描述信息
axes[0].set_xlabel("x")
axes[0].set_ylabel("2x")
axes[0].set_title("y=2x")axes[1].set_xlabel("x")
axes[1].set_ylabel("3x")
axes[1].set_title("y=3x")#显示图像
plt.show() 

在这里插入图片描述

三、散点图

分析不同变量之间的关系/规律

plt.scatter(x,y)

3.1散点图的绘制

import matplotlib.pyplot as plt#数据
math_score=[140,96,134,108,88]
physics_score=[95,78,86,81,72]#创建画布
plt.figure()#绘制散点图
plt.scatter(math_score,physics_score)#显示图像
plt.show()

结果:
在这里插入图片描述

四、柱状图

统计不同类别的数量大小,比较数据之间的差异

plt.bar(x,width,...)
#x为数据
#width为柱宽

4.1一个类别单个柱状图

  • 代码示例:
import matplotlib.pyplot as plt#数据
students=["小明","小红","小刚","小智","小华"]
math_score=[140,96,134,108,88]#创建画布
plt.figure()#绘制图像
plt.bar(range(0,5),math_score,color=['r','y','g','c','b']) #采用不同颜色绘制柱状图#修改刻度
plt.xticks(range(0,5),students)#添加标题
plt.title("数学成绩")#添加网格显示
plt.grid(linestyle=":",alpha=0.5)#显示图像
plt.show()

结果:
在这里插入图片描述

4.2一个类别多个柱状图

  • 代码示例:
import matplotlib.pyplot as plt#数据
students=["小明","小红","小刚","小智","小华"]
math_score=[i/150 for i in [140,96,134,108,88]]
physics_score=[i/100 for i in [95,78,86,81,72]]#创建画布
plt.figure()#绘制图像
plt.bar(range(0,5),math_score,color='r',width=0.2)
plt.bar([i-0.2 for i in range(0,5)],physics_score,color='b',width=0.2)#注意刻度要作出调整,不然会重叠在一起#修改刻度
plt.xticks([i-0.1 for i in range(0,5)],students) #添加标题
plt.title("数学和物理成绩得分情况")#添加网格显示
plt.grid(linestyle=":",alpha=0.5)#显示图像
plt.show()

结果:
在这里插入图片描述

五、直方图

表示数据分布状况

plt.hist(x,bins,density,...)
#x为数据
#bins为组数
#density为是否显示频率(默认不显示)

5.1 直方图与柱状图的区别

直方图柱状图
展示数据的分布比较数据的大小
x轴展示的是数字区间x轴展示的是分类数据
柱子间无间隔柱子间有间隔
柱子宽度有意义

5.2 直方图的绘制

import matplotlib.pyplot as plt#数据
math_score=[140,96,134,108,138,128,128,117,126,116,100,114,115,116,112,116,101,102,89,96,85,108,92,75,116,92,124,150]#创建画布
plt.figure(figsize=(20,10),dpi=100)#绘制图像
d=3
group_num = (max(math_score)-min(math_score))//d #组数=(最大值-最小值)//组距
plt.hist(math_score,bins=group_num,density=True)#修改刻度
plt.xticks(range(min(math_score),max(math_score)+d,d))#添加标题
plt.title("数学成绩直方图")#添加网格显示
plt.grid(linestyle=":",alpha=0.5)#显示图像
plt.show()

结果:
在这里插入图片描述

六、饼图

不同数据占比情况(类别太多不建议使用)

plt.pie(x,labels,autopct,colors,...)
#x:数量
#labels:每部分的名称
#autopct:占比显示
#colors:每部分颜色

6.1 饼图的绘制

import matplotlib.pyplot as plt#数据
students=["小明","小红","小刚","小智","小华"]
duty_days=[3,5,8,6,8]#创建画布
plt.figure()#绘制图像
plt.pie(duty_days,labels=students,autopct="%1.2f%%",colors=['r','y','c','b','g'])
plt.axis('equal')#保证饼图长宽一致#显示图例
plt.legend()#修改刻度
plt.xticks()#添加标题
plt.title("上月同学值日天数")#添加网格显示
plt.grid(linestyle=":",alpha=0.5)#显示图像
plt.show()

结果:
饼图


http://chatgpt.dhexx.cn/article/412hXLE6.shtml

相关文章

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绘图库,它以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形。它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案,也可用于Python脚本,Python和IPython (opens new win…

Python--Matplotlib(基本用法)

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

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

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

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

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

AS608指纹模块的上位机检测

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

Arduino Nano+AS608指纹门禁系统

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

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

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

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

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

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

基于STM32F103AS608的智能打卡系统 工程源码链接 链接:https://pan.baidu.com/s/1RRc03nTrcTp--xfQnv2r9Q?pwdin9p 提取码: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指纹模块

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

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

简言:本人在使用AS608模块时遇到了握手失败、通讯失败的问题,尝试网上各种方法未果后,换了一个AS608模块,问题解决。 一、与单片机握手失败 检查代码中的波特率是否为9600,再通过上位机将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;它的使用场…

下午第一题

2017上半年 阅读下列说明和图&#xff0c;回答问题1至问题4&#xff0c;将解答填入答题纸的对应栏内。 【说明】 某医疗器械公司作为复杂医疗产品的集成商&#xff0c;必须保持高质量部件的及时供应。为了实现这一目标&#xff0c;该公司欲开发一采购系统。系统的主要功能如下:…

JS实现答题上一题下一题

以下是实现效果图 JS块代码 var TRUE_COUNT 0//正确的题数var count 10;//当前所在题数var thisURL document.URL;var getval thisURL.split(?)[1];var titleType getval.split("")[1];//获取题目typevar class_radio "selection";//选择按钮var ur…