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

article/2025/8/29 8:55:30

matplotlib基础系统介绍

目录

1. Matplotlib概述

2. 讲解Matplotlib核心原理

3. Matplotlib相关基础操作介绍

  • 3.1 创建figure(画布)的方式及完整绘图步骤
  • 3.2 线型设置
  • 3.3 中文与特殊符号(负号)相关支持设置
  • 3.4 图例和网络的设置
  • 3.5 坐标轴的设置和相关操作
  • 3.6 figure的区域和大小设置

1.Matplotlib概述

Matplotlib 是一个基于python 的绘图库,完全支持二维图像,有限支持三维图形,Matplotlib是python编程语言及其数据科学扩展包NumPy的可视化操作界面库。它利用通过的图形用户界面工具包(如Tkinter、wxPython 、Qt、FLTK、Cocoatoolkits或GTK+)向应用程序嵌入式绘图提供了应用程序接口(API)。此外,Matolotlib还有一个基于图像处理库(如图形库OpenGL)的pylab接口,其设计与MATLAB非常类似。SciPy就是用Matplotlib进行图形绘制。


2. 讲解Matplotlib核心原理

想认识matplotlib绘图的原理就必须清楚的理解figure(画布)、axes(坐标系)、axis(坐标轴)三者之间的关系
在这里插入图片描述
类似画画,首先需要一张画布,对于matplotlib相当于初始化了一张figure(画布),然后一张画布可以分配出不同的区域进行画画,相当于figure可以指定多个axes(坐标系),而在每个axes(坐标系)上绘图,相当于每个axes(坐标系)中都有一个axis(坐标轴)

  • 画图的实现
    在这里插入图片描述
  • matplotlib绘图实现
    在这里插入图片描述

3. Matplotlib相关基础操作介绍

3.1创建figure(画布)的方式及完整绘图步骤
一、创建figure(画布)的方式
  • 隐式创建
  • 显示创建

①隐式创建figure对象

先观察下面代码

import matplotlib.pyplot as plt
x = [-1, 3, 5, 0]
y = [4, -9, 2, 8]
plt.plot(x, y)
plt.show()

在这里插入图片描述
看到上面的结果,可能会有疑问,在前面的叙述中,我们已经说过,想要使用matplotlib绘图,必须先要创建一个figure(画布)对象,可是上面的代码并没有创建,这是为什么呢?

  • 这是因为在第一次执行plt.xxx()这句代码时,系统就会自动地去判断是否已经有了figure对象,如果没有,系统会自动创建一个figure对象,并且在这个figure之上,自动创建一个axes坐标系。
    注意:
    1. 当我们只是绘制一个图形时,那么直接plt.xxx(),系统会自动帮我创建一个figure对象和一个axes坐标系。
    2.这也意味着如果我们不设置figure对象,那么一个figure对象上,只能有一个axes坐标系,即我们只能绘制一个图形。

②显式创建figure对象

  • 对于不同的图,想让他分布在不同的图上,那么就得用plt.figure进行设置,以plt.figure( )开头,获取每个axes(坐标系)
    观察下面基本创建代码,后面会详细介绍
import matplotlib.pyplot as plt
figure = plt.figure()  # 创建figure(画布)
figure.add_subplot(2,2,1)
figure.add_subplot(2,2,2)
figure.add_subplot(2,2,3)
figure.add_subplot(2,2,4)
plt.plot()
plt.show()

在这里插入图片描述
导入数据之后的结果

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-2,2,200)
y1 = 2 * x + 1
y2 = 2*x**2
y3 = 1/x
y4 = x ** 0.5
figure = plt.figure()
axes1 = figure.add_subplot(2,2,1)
axes2 = figure.add_subplot(2,2,2)
axes3 = figure.add_subplot(2,2,3)
axes4 = figure.add_subplot(2,2,4)
axes1.plot(x, y1)
axes2.plot(x, y2)
axes3.plot(x, y3)
axes4.plot(x, y4)
plt.show()

结果如下图所示
在这里插入图片描述

二、完整的绘图步骤
  • 初步认识创建figure后,我了解基本的绘图步骤

① 导库

# 我们主要用的是matplotlib中的pyplot
import matplotlib.pyplot as plt 

② 创建figure画布对象

  • 如果绘制一个简单的小图形,可以不设置figure对象,系统默认创建的figure对象。

  • 如果需要绘制多个图形,那么就必须创建figure对象并且得到每个位置上的axes对象,再对每个axes相应的位置进行绘制。

③ 根据figure对象进行布局设置

figure = plt.figure()  #只有一个坐标系
figure.add_subplot(1, 1, 1)
plt.show()figure = plt.figure()  # 图一
figure.add_subplot(1, 2, 1)
figure.add_subplot(1, 2, 2)
plt.show()figure = plt.figure()  # 图二
figure.add_subplot(2, 2, 1)
figure.add_subplot(2, 2, 2)
figure.add_subplot(2, 2, 4)
plt.show()

在这里插入图片描述

根据上面代码自行测试得出规律

④ 获取对应的axes坐标系对象

figure = plt.figure()
axes1 = figure.add_subplot(2,2,1)
axes2 = figure.add_subplot(2,2,2)
axes3 = figure.add_subplot(2,2,3)
axes4 = figure.add_subplot(2,2,4)

⑤ 对相应位置的图形进行绘制
绘制图形关键一步:传入数据,并对绘制图形的一些细节进行设置。如下例子,相关知识点后续会介绍;

x = np.linspace(-2, 2, 200)
y2 = 2 * x ** 2
plt.plot(x, y2, 'b-o', lw=5, marker='o', mfc='r')
plt.show()

在这里插入图片描述

⑥ 显示图形

如果是在pycharm中绘图的话,必须要加下面代码,才能显示
plt.show()
至于figure.show()不知道是本人的版本问题还是怎么样,在pycharm中没效果
如果使用Jupyter Notebook 则不需要,自动显示

3.2 线型设置

线型设置主要四种

  • ①颜色
  • ②点标记
  • ③线条样式
  • ④透明度设置
常用的参数名 (小括号为简写)参数介绍
color( c )线条颜色
linestyle(ls)线条形状
linewidth(lw)线的宽度
marker点标记形状
markersize(ms)点标记的大小
markeredgecolor(mec)点边缘颜色
markeredgewidth(mew)点边缘宽度
markerfacecolor(mfc)点的颜色

举例:

plt.plot([5, 6, 7, 8], [1, 2, 3, 4], color='blue', linestyle='--',linewidth=5, marker='^', markeredgecolor='green', markersize=7,markeredgewidth=2, markerfacecolor='red',)
plt.show()

或简写

plt.plot([5, 6, 7, 8], [1, 2, 3, 4], color='blue', ls='--',lw=5, marker='^', mec='green', ms=7,mew=2, mfc='red',)
plt.show()

在这里插入图片描述

①颜色

常用颜色:

  • 颜色:蓝色"b" 绿色"g" 红色"r" 青色"c" 品红"m" 黄色"y" 黑色"k" 白色"w"
# color语法
plt.plot([4,7,1,0],[1,3,9,2],color='r')

颜色大全
在这里插入图片描述

②点标记
color参数说明marker参数说明linestyle参数说明
r红色.点标记-直线
y黄色o圆圈标记- -虚线
g绿色v下三角形标记:点线
b蓝色^上三角形标记-.点画线
w白色<左三角形标记
k黑色>右三角形标记
m品红s正形标记
c青色p五边形标记
*五角形标记
h六边形标记
++号标记
xx标记
D大菱形标记
d小菱形标记
l竖线标记
_横线标记
③线条样式
线条样式大全说明
-直线
- -虚线
:点线
-.点画线

简写:色、点标记与线型可以使用一个参数设置进行简化

  • 格式:颜色、点标记样式、线条样式位置可互换
  • 注意:简化设置参数除这三者之外不需要再添加任何东西
  • 举例:ro-- 、b:o 、*-.g 、-y<

代码测试

plt.plot([4, 7, 1, 0], [1, 3, 9, 2], '*-.g')
plt.show()

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

④透明度设置

1. 介绍:
可以通过alpha参数来设置图像的透明度,alpha参数的值范围在 0(完全透明) ~ 1(不透明)

2. 举例说明:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-2,2,200)
y1 = 2 * x + 1
y2 = 2*x**2
plt.plot(x,y1,'r*:',alpha=0.1)
plt.plot(x,y2,'b<-.',alpha=0.7)
plt.show()

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


3.3 中文与特殊符号(负号)相关支持设置

matplotlib设置相关支持主要有两种:

  • ①中文支持设置
  • ②"-"(负号)特殊符号设置
①中文支持设置

matplotlib默认的情况下是不支持中文显示会产生中文乱码的问题,因为字体的默认设置中并没有中文字体,所以我们只要需要做一些中文字体的名称的设置操作就可以了。大致的设置方法会一一介绍:

<1>设置中文字体相关参数

family(中文字体)说明style(字体风格)说明size(字体大小)说明
SimHei中文黑体normal常规(默认)10默认
FangSong中文仿宋italic斜体>10字体变大
YouYuan中文幼圆oblique倾斜<10字体变小
STSong华文宋体
Kaiti中文楷体
LiSu中文隶书
Microsoft YaHei微软雅黑
Microsoft JhengHei微软正黑体

<2>plt.rcParams方法设置

  • 示例代码
# # 中文字体设置
plt.rcParams["font.family"] = "SimHei"
# # 字体风格设置
plt.rcParams["font.style"] = "italic"
# # 字体大小设置(默认是10)
plt.rcParams["font.size"] = 16
x = np.linspace(-2, 2, 200)
y2 = 2 * x ** 2
plt.plot(x, y2)
plt.title('我是标题')
plt.show()
  • 结果如下
    在这里插入图片描述

<3>plt.rc()方法设置

  • 示例代码
x = np.linspace(-2, 2, 200)
y2 = 2 * x ** 2
plt.rc('font',family='MicroSoft YaHei',weight='bold')
plt.plot(x, y2)
plt.title('我是标题')
plt.show()
  • 结果如下
    在这里插入图片描述

<4>font_manager()自定义方法设置

  • 示例代码
from matplotlib.font_manager import FontProperties
# fname:给定电脑字体的路径;还可以进行其它设置
font = FontProperties(fname='C:\\Windows\\Fonts\\simfang.ttf', size=25)
x = np.linspace(-2, 2, 200)
y2 = 2 * x ** 2
plt.plot(x, y2)
plt.title('我是标题', fontproperties=font)
plt.show()

自己也可以去打开电脑字体的路径
在这里插入图片描述

  • 结果如下
    在这里插入图片描述

<5>定义变量font方法设置

  • 示例代码
# 定义一个font就可以在多个绘图设置中文支持
font = {"family": "SimHei","style": "oblique","weight": "normal","color": "red","size": 25}        
x = np.linspace(-2, 2, 200)
y2 = 2 * x ** 2
plt.plot(x, y2)
plt.title('我图一是标题', font)
plt.show()plt.plot([4, 7, 1, 0], [1, 3, 9, 2])
plt.title('我图二是标题', font)
plt.show()
  • 结果如下
    在这里插入图片描述
②"-"(负号)特殊符号设置

在支持中文显示状态下是否支持使用Unicode的负号需要设置axes.unicode_minus为False

  • 示例代码
plt.rcParams["axes.unicode_minus"] = False  # 设置中文显示状态下支持使用Unicode的‘-’号
plt.rcParams["font.family"] = "SimHei"
plt.rcParams["font.style"] = "italic"
plt.rcParams["font.size"] = 16
x = np.linspace(-2, 2, 200)
y2 = 2 * x ** 2
plt.plot(x, y2)
plt.title('我是标题')
plt.show()
  • 结果如下
    在这里插入图片描述

3.4 图例和网络的设置

  这部分主要讲下面两部分的相关知识点:

  • ①图例设置
  • ②网格设置

①图例设置

<1>什么是图例?
图例(legend)是放置在我们的坐标边界里面的一个东西,legend 在英语里面的含义就是图示的说明,如下图所指的。
在这里插入图片描述

<2>图例有什么作用?
解释一下我们坐标轴里面的图形的含义,(例如:x线表示男,y线表示女),特别是在绘制多条线时,设置图例来标注每条线所代表的含义可以帮助我们看图形更加清晰易懂。

<3>legend函数中的常用参数
语法示例:

plt.legend(['第一条线'], loc='upper center', title='我是图例标题', ncol=1, frameon=False)
参数说明
[‘坐标轴名称’]一般为第一个legend函数参数,列表的元素个数与坐标轴数目相等
loc指定图例的位置。默认为best。可以以元组形式指定坐标,基于图像左下角计算位置
title设置图例的标题
ncol图例显示的列数,默认为1列
frameon设置是否显示图例的边框。True(默认值)显示,False不显示

注意:legend函数要做坐标轴画好之后绘制

①loc参数: 设置图例摆放位置
  该参数的值默认是best,还有upper right、upper left、lower left、lower right、right 、center left、center right、lower center、upper center、center.也可以指定一个坐标(元组),默认以左下角计算位置,坐标的值是基于当前坐标原点的比例.

  • 示例代码
plt.plot([4, 7, 1, 0], [1, 3, 9, 2], 'ro--')
plt.rcParams['font.family'] = 'SimHei'
plt.legend(['我是一个图例'], loc=(0.5, 0.8))
plt.show()
  • 结果如下 (若loc=(1,1)图例已经在坐标系外)

在这里插入图片描述  这里的loc是比较简单直接的方式,此外,我们有一些通用的方法来手动的设置我们的legend box 放置的地方,那就是使用我们的bbox_to_anchor这个参数和loc参数一起搭配,在此不再细说。

②title参数: 设置图例的标题

  • 示例代码
plt.rcParams["axes.unicode_minus"] = False
plt.rcParams["font.family"] = "SimHei"
x = np.linspace(-2, 2, 200)
y1 = 2 * x + 1
y2 = 2 * x ** 2
y3 = x ** 1 / 2 - 1
plt.plot(x, y1)
plt.plot(x, y2)
plt.plot(x, y3)
plt.legend(['第一条线', '第二条线', '第三条线'], loc='upper center', title='我是图例标题')
plt.show()
  • 结果如下

在这里插入图片描述

③ncol参数: 设置图例显示的列数

  • 示例代码
plt.rcParams["axes.unicode_minus"] = False
plt.rcParams["font.family"] = "SimHei"
x = np.linspace(-2, 2, 200)
y1 = 2 * x + 1
y2 = 2 * x ** 2
y3 = x ** 1 / 2 - 1
plt.plot(x, y1)
plt.plot(x, y2)
plt.plot(x, y3)
plt.legend(['第一条线', '第二条线', '第三条线'], loc='upper center', title='我是图例标题', ncol=3)  # 将图例显示列数设置为3
plt.show()
  • 结果如下

在这里插入图片描述

④frameon参数: 设置是否显示图例的边框

  • 示例代码
plt.rcParams["axes.unicode_minus"] = False
plt.rcParams["font.family"] = "SimHei"
x = np.linspace(-2, 2, 200)
y1 = 2 * x + 1
y2 = 2 * x ** 2
y3 = x ** 1 / 2 - 1
plt.plot(x, y1)
plt.plot(x, y2)
plt.plot(x, y3)
plt.legend(['第一条线', '第二条线', '第三条线'], loc='upper center', title='我是图例标题', ncol=3, frameon=True)
plt.show()
  • 结果如下

在这里插入图片描述

②网格设置

  网格设置:以xy坐标轴上显示的各个点延长出线条形成一张网图,可以更清晰得观察绘图对应得坐标轴上的每一个点,可以通过plt.grid()方法来设置是否显示网格。True为显示,False不显示。

<1>网格设置语法参数

参数说明
color )设置网格线颜色
axis设置网格线显示x或y(默认全部显示:both)
linestyle设置网格线形状
linewidth设置网格线宽度
  • 示例代码
plt.rcParams["axes.unicode_minus"] = False
plt.rcParams["font.family"] = "SimHei"
x = np.linspace(-2, 2, 200)
y1 = 2 * x + 1
y2 = 2 * x ** 2
y3 = x ** 1 / 2 - 1
plt.plot(x, y1)
plt.plot(x, y2)
plt.plot(x, y3)
plt.legend(['第一条线', '第二条线', '第三条线'], loc='upper center', title='我是图例标题', ncol=3, frameon=True)
plt.grid(True, c='k', ls='--', lw='3')
plt.show()
  • 结果如下

在这里插入图片描述

  • 下面为axis的示例结果

在这里插入图片描述


3.5 坐标轴的设置和相关操作

  坐标轴的设置可以通过plt对象的相关方法进行设置或者获取其刻度与标签的信息等:

坐标轴的设置以及相关操作主要五种:

  • ①限制坐标轴的范围
  • ②添加坐标轴的标签
  • ③更改坐标轴的表示
  • ④移动坐标轴位置和改变颜色
  • ⑤plt.axis()方法的操作
相关方法说明
plt.xlim() 、ylim()设置x、y轴的刻度范围
plt.xable()、yable()添加x、y轴的标签名
plt.xticks()、yticks()更改x、y轴的刻度范围
plt.gca()获取axis的属性进行对坐标轴移动等操作
plt.axis()可以同时设置或获取x与y轴的刻度范围,或者是取消刻度显示
①限制坐标轴的范围:plt.xlim 、ylim
  • 示例代码
x = np.linspace(-2, 2, 200)
y1 = 2 * x ** 2
plt.xlim(0, 2)
plt.ylim(0, 2)
plt.plot(x, y1)  # 左图为不限制坐标轴的范围
plt.show()
  • 结果如下

在这里插入图片描述

②添加坐标轴的标签:plt.xlabel、ylabel
  • 示例代码
x = np.linspace(-2, 2, 200)
y1 = 2 * x ** 2
# 记得设置中文支持和负号支持
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
plt.xlabel('我是x轴')
plt.ylabel('我是y轴')
plt.plot(x, y1)
plt.show()
  • 结果如下

在这里插入图片描述

③更改坐标轴的表示:plt.xticks、yticks
  • 示例代码
x = np.linspace(-2, 2, 200)
y1 = 2 * x ** 2
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
# 设置x轴的表示
plt.xticks([-2.0, 0.0, 2.0], ['我是左边', '我是中间', '我是右边'])
# 设置y轴的表示
plt.yticks([0, 4, 8], ['我是下边', '我是中间', '我是上边'])
plt.plot(x, y1)
plt.show()
  • 结果如下(左图为参考对比)

在这里插入图片描述

④移动坐标轴位置和改变颜色的设置:plt.gca()

matplotlib可以通过gca(get current axis)来获取当前axis的属性

<1>移动坐标轴位置

  • 示例代码
ax = plt.gca()  # 获取当前axis的属性
x = np.linspace(-2, 2, 200)
y1 = 2 * x ** 2
y2 = -(x ** 0.5)
# data位置的参数:'outward', 'axes','data'
ax.spines['bottom'].set_position(('data', 0))  # 将下方坐标轴移动到数据0的位置
ax.spines['left'].set_position(('data', 0))  # 将左边坐标轴移动到数据0的位置
plt.plot(x, y1, 'r--', lw=3)
plt.plot(x, y2, 'y:', lw=2)
plt.show()
  • 结果如下

在这里插入图片描述

<2>改变坐标轴颜色

  还是一上面的代码为基础,给相对应坐标进行退色,使得绘图更加美观

  • 示例代码
ax = plt.gca()  # 获取当前axis的属性
x = np.linspace(-2, 2, 200)
y1 = 2 * x ** 2
y2 = -(x ** 0.5)
ax.spines['bottom'].set_position(('data', 0))  # 将下方坐标轴移动到数据0的位置
ax.spines['left'].set_position(('data', 0))  # 将左边坐标轴移动到数据0的位置
ax.spines['top'].set_color('none')  # 将坐标轴的上边设成无色
ax.spines['right'].set_color('none')  # 将坐标轴的右边设成无色
plt.plot(x, y1, 'r--', lw=3)
plt.plot(x, y2, 'y:', lw=2)
plt.show()
  • 结果如下

在这里插入图片描述

⑤plt.axis()方法的操作

  plt.axis()方法可以 : 设置、获取坐标轴的刻度范围,也可以取消坐标轴的刻度显示

plt.axis()方法的参数与说明表格

参数说明
无参以元组形式(xmin, xmax, ymin, ymax)返回x、y坐标轴的刻度范围
(xmin, xmax, ymin, ymax)设置x与y轴的刻度范围
tight设置x、y轴紧凑显示
equal设置x、y轴长度相同
off取消坐标轴的显示

<1> 获取x与y轴的刻度范围: plt.axis()

  • 示例代码
plt.plot([-1, -3, -5], [1, 3, 2], 'r-o')
print(plt.axis())  # PyCharm需要打印出来
plt.show()
  • 结果如下
    在这里插入图片描述

<2> 设置x与y轴的刻度范围:plt.axis((xmin, xmax, ymin, ymax))

  • 示例代码
plt.plot([-1, -3, -5], [1, 3, 2], 'r-o')
plt.axis((-5, 5, -5, 5))  # 设置x与y轴的刻度范围
plt.show()
  • 结果如下

在这里插入图片描述

<3> 设置x、y轴紧凑显示 :plt.axis(‘tight’)

  • 示例代码
x = np.linspace(0, 1, 50)
y = 0.5 ** x
y1 = x ** 2
plt.axis('tight')  # 设置x、y轴紧凑显示
plt.plot(x, y)
plt.plot(x, y1)
plt.show()
  • 结果如下(左图为参考对比)

在这里插入图片描述

<4>设置x、y轴长度相同 :plt.axis(‘equal’)

  • 示例代码
x = np.linspace(0, 1, 50)
y = 0.5 ** x
y1 = x ** 2
plt.axis('equal')  # 设置x轴和y轴每个单位长度大小一致
plt.plot(x, y)
plt.plot(x, y1)
plt.show()
  • 结果如下(左图为参照对比)

在这里插入图片描述

<5>取消坐标轴的显示 : plt.axis(‘off’)

  • 示例代码
x = np.linspace(0, 1, 50)
y = 0.5 ** x
y1 = x ** 2
plt.axis('off')  # 取消显示坐标轴
plt.plot(x, y)
plt.plot(x, y1)
plt.show()
  • 结果如下

在这里插入图片描述


3.6 figure的区域和大小设置

  前面主要讲的都是一个figure(画布)上对应着一个axes(坐标系)进行绘图,而现在我们要开始介绍一张图上绘制多个图形的相关操作。

figure的区域和大小设置主要介绍2个操作:

  • ①figure的区域分配:
     1.figure对象的add_subplot方法使用说明
     2.plt的subplot方法的使用说明
     3.plt的subplots方法的使用说明
     4.plt.subplots_adjust方法调整子图与子图之间的距离
     5.facecolor设置绘图区域的背景色

  • ②figure的大小设置

①figure的区域分配

<1> figure对象的add_subplot方法和subplot方法

  为什么要把add_subplot方法和subplot方法放在一起呢,因为这两种方式的使用方法大致相同(想偷懒)
在这里插入图片描述
废话不多说,马上送上干货。前面的显式创建figure对象我们只是一笔带过,现在来详细介绍。

语法:plt.add_subplot(nrows, ncols, plot_number)

参数说明
nrows行的数量
ncols列的数量
plot_number要选定的当前绘图区域
facecolor设置绘图区域的背景色
  • 示例代码
figure = plt.figure()
figure.add_subplot(3, 2, 4)
plt.show()
  • 结果如下
    在这里插入图片描述

可能还有些小伙伴看来很懵,这是什么意思,我画个图你就明白了

在这里插入图片描述
看完再个示例:

设置5行3列,一行3个位置,一共有5行,那么一共有15个位置,从左到右,从上到下排序。

figure = plt.figure()
figure.add_subplot(5, 3, 1)
figure.add_subplot(5, 3, 5)
figure.add_subplot(5, 3, 7)
figure.add_subplot(5, 3, 12)
figure.add_subplot(5, 3, 15)
plt.show()
  • 结果如下

在这里插入图片描述

<2>figure各个区域进多个绘图

  add_subplot方法会返回每个子绘图区域的对象,调用该对象即可实现在子区域的图形绘制。

  • 代码示例
# 模拟数据
x=np.linspace(-2, 2,100)
y1= x**2
y2 = x ** 0.5
y3 = np.pi **x
y4 = np.sin(x)
y5 = np.tan(x)
# 显式创建figure
figure = plt.figure()
axis1=figure.add_subplot(3, 2, 1)
axis2=figure.add_subplot(3,2,2)
axis3=figure.add_subplot(3,2,3)
axis4=figure.add_subplot(3,2,4)
axis5=figure.add_subplot(3,2,5)
axis6=figure.add_subplot(3,2,6)
axis1.plot(x,y1, c='r')
axis2.plot(x,y2, c='b')
axis3.plot(x,y3, c='g')
axis4.plot([1,3,5],[2,4,6], c='k')
axis5.plot(y4, c='y')
axis6.plot(y5, c='m')
plt.show()
  • 结果如下
    在这里插入图片描述

<3>add_subplot设置绘图区域的背景色:facecolor

  设置绘图区域的背景颜色没有需求的话一般不设置

  • 示例代码
figure = plt.figure()
figure.add_subplot(3, 2, 1, facecolor='red')
figure.add_subplot(3, 2, 2, facecolor='green')
figure.add_subplot(3, 2, 3, facecolor='#FFD28A')
figure.add_subplot(3, 2, 4, facecolor='#99B9FF')
figure.add_subplot(3, 2, 5, facecolor='#FF3053')
figure.add_subplot(3, 2, 6, facecolor='#FF2FF4')
plt.show()
  • 结果如下

在这里插入图片描述
使用PyCharm的小伙伴可以打开右边plots的小铅笔,可以打开调色板哦

在这里插入图片描述

<4>
<5>
<6>
<7>
<8>

②figure的大小设置

后面每晚我会持续更新,有什么不足的欢迎小伙伴们在评论交流


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

相关文章

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;它的使用场…

下午第一题

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…

js、jq实现答题上一题下一题

一、以下是效果图 说明&#xff1a;第一题只有一个“下一题”按钮&#xff0c;中间题目有两个按钮“上一题”“下一题”&#xff0c;最后一题按钮改为“提交”&#xff1b; 二、代码 js代码&#xff08;jquery需要自行引入&#xff09; var number document.getElementsByCl…