【数据分析入门】Matplotlib

目录

  • 零、图形解析与工作流
    • 0.1 图形解析
    • 0.2 工作流
  • 一、准备数据
    • 1.1 一维数据
    • 1.2 二维数据或图片
  • 二、绘制图形
    • 2.1 画布
    • 2.2 坐标轴
  • 三、绘图例程
    • 3.1 一维数据
    • 3.2 向量场
    • 3.3 数据分布
    • 3.4 二维数据或图片
  • 四、自定义图形
    • 4.1 颜色、色条与色彩表
    • 4.2 标记
    • 4.3 线型
    • 4.4 文本与标注
    • 4.5 数学符号
    • 4.6 尺寸限制、图例和布局
      • 4.6.1 尺寸限制与自动调整
      • 4.6.2 图例
      • 4.6.3 标记
      • 4.6.4 子图间距
      • 4.6.5 坐标轴边线
  • 五、保存
    • 5.1 保存画布
    • 5.2 保存透明画布
  • 六、显示图形
  • 七、关闭与清除


Matplotlib 是 Python二维绘图库,用于生成符合出版质量或跨平台交互环境的各类图形
在这里插入图片描述

零、图形解析与工作流

0.1 图形解析

在这里插入图片描述

0.2 工作流

   Matplotlib 绘图 的基本步骤一般为6步,分别为:1-准备数据,2-创建图形,3-绘图,4-自定义设置, 5-保存图形,6-显示图形

>>> import matplotlib.pyplot as plt
>>> x = [1,2,3,4]
>>> y = [10,20,25,30]
# 步骤1
>>> fig = plt.figure()
# 步骤2
>>> ax = fig.add_subplot(111)
# 步骤3
>>>ax.plot(x,y,color='lightblue',linewidth=3)
# 步骤4、5
>>> ax.scatter([2,4,6], [5,15,25], color='darkgreen', marker='^')
>>> ax.set_xlim(1, 6.5)
>>> plt.savefig('foo.png')
>>> plt.show()
# 步骤6

   下面对上述代码进行解释:
   步骤1 创建一个新的 Figure 对象plt.figure() 返回一个新的空白绘图区域,可以在其中添加图形元素。
   步骤2 在 Figure 上添加一个子图fig.add_subplot(111) 添加一个包含单个子图的 Axes 对象。这里的参数 (111) 表示**将整个绘图区域划分为 1 行 1 列的网格,并选择第一个子图**。
   步骤3 在子图上绘制线图ax.plot(x, y, color=‘lightblue’, linewidth=3) 使用给定的 x 和 y 值绘制一条线,指定线的 颜色为浅蓝色线宽为 3
   步骤4、5 在子图上添加散点图。ax.scatter([2,4,6], [5,15,25], color=‘darkgreen’, marker=‘^’) 在坐标 (2, 5)、(4, 15)、(6, 25) 处 添加三个散点,颜色为深绿色,形状为三角形。
   步骤4、5 还调用了 ax.set_xlim() 方法设置 x 轴的显示范围为 1 到 6.5,以适应数据和散点的显示。
   步骤6 保存图形为图片文件。plt.savefig(‘foo.png’) 将当前图形保存为名为 “foo.png” 的图片文件
   最后一步 显示图形plt.show() 将图形显示在弹出的窗口中。完成整个绘图过程后,将图形保存为 “foo.png”,同时在窗口中显示出来。


一、准备数据

1.1 一维数据

   我们先 使用Numpy库生成一个长度为100的一维数组,通过对其的操作来逐步熟悉Matplotlib。

# 导入 NumPy 库并将其命名为 np
>>> import numpy as np
# 使用 np.linspace() 函数生成一个从 0 到 10(包含)的等间距数组,数组长度为 100。生成一个长度为 100 的一维数组,并将其赋值给变量 x
>>> x = np.linspace(0, 10, 100)
>>> y = np.cos(x) 
>>> z = np.sin(x)

1.2 二维数据或图片

   现在我们已经对Matplotlib有一定的了解了,接下来让我们使用 NumPyMatplotlib库 来生成一些数据和图像吧。

>>> data = 2 * np.random.random((10, 10))
# 生成一个形状为(10, 10)的随机数组,其中的元素取值范围在0到2之间,并将结果存储在变量data中
>>> data2 = 3 * np.random.random((10, 10))
# 创建一个形状为(10, 10)的随机数组,元素的取值范围在0到3之间
>>> Y, X = np.mgrid[-3:3:100j, -3:3:100j]
#  创建两个二维数组Y和X,分别包含了从-3到3之间的100个等间隔的值
>>> U = -1 - X**2 + Y
# 计算一个与X和Y相关的二维数组U
>>> V = 1 + X - Y**2
# 计算另一个与X和Y相关的二维数组V
>>> from matplotlib.cbook import get_sample_data
# 导入函数get_sample_data,用于获取示例数据文件的路径
>>> img = np.load(get_sample_data('axes_grid/bivariate_normal.npy'))
# 加载一个示例数据文件,存储二维数组img

二、绘制图形

   Matplotlib是一个用于绘制图表可视化数据Python库。通过 导入matplotlib.pyplot模块,我们就可以使用其中的函数来创建和显示图表了。通常将其命名为plt,以简化在代码中使用的输入量。

>>> import matplotlib.pyplot as plt
# 导入了Matplotlib库,并将其命名为plt

2.1 画布

   通过调用plt.figure()函数指定适当的参数,我们可以创建不同大小的Figure对象,以在其上绘制图表和图形。

>>> fig = plt.figure()
# 创建一个Figure对象并将其赋值给变量fig
>>> fig2 = plt.figure(figsize=plt.figaspect(2.0))
# 创建另一个Figure对象并将其赋值给变量fig2

2.2 坐标轴

  图形是以 坐标轴为核心绘制的,大多数情况下,子图就可以满足需求。子图是栅格系统的坐标轴

  通过调用Figure对象的add_subplot()方法使用subplots()函数,我们可以 在Figure上创建多个子图或坐标轴,并将其分配给不同的变量,以便在每个子图上绘制不同的内容。

>>> fig.add_axes()
# 调用Figure对象的add_axes()方法,用来手动添加一个新的坐标轴到图形上
>>> ax1 = fig.add_subplot(221) # row-col-num
# 使用add_subplot()方法在Figure对象上创建一个子图(Axes对象)
# 参数(221)表示将整个图形窗口划分为2行2列的子图网格,并选择第一个子图作为当前的绘图区域(ax1)
>>> ax3 = fig.add_subplot(212) 
# 使用add_subplot()方法在Figure对象上创建另一个子图(Axes对象)
# 参数(212)表示将整个图形窗口划分为2行1列的子图网格,并选择第二个子图作为当前的绘图区域(ax3)
>>> fig3, axes = plt.subplots(nrows=2,ncols=2)
# 使用subplots()函数创建一个有多个子图的Figure对象(fig3),并将两个返回值分别赋值给fig3和axes
# 参数nrows和ncols分别指定了子图的行数和列数,生成了一个2行2列的子图网格
>>> fig4, axes2 = plt.subplots(ncols=3)
# 使用subplots()函数创建另一个有多个子图的Figure对象(fig4),并将两个返回值分别赋值给fig4和axes2
# 参数ncols指定了子图的列数,生成了一个1行3列的子图网格

三、绘图例程

3.1 一维数据

  我们也可以 使用Matplotlib库绘制不同类型的图形和图表

>>> fig, ax = plt.subplots()
# 创建了一个Figure对象(fig)和一个Axes对象(ax)
# Figure对象代表整个图形窗口,而Axes对象代表一个具体的绘图区域,我们可以在其上绘制各种图形和图表
>>> lines = ax.plot(x,y) # 用线或标记连接点
# 使用plot()函数在Axes对象上绘制了一条线,通过连接给定的点(x, y)
>>> ax.scatter(x,y) # 缩放或着色未连接的点
# 使用scatter()函数在Axes对象上绘制散点图,展示了未连接的点
>>> axes[0,0].bar([1,2,3],[3,4,5]) # 绘制等宽纵向矩形
# 在子图网格中的第一个子图(axes[0, 0])上绘制了垂直的等宽条形图,通过指定x轴和对应的高度值来创建矩形条
>>> axes[1,0].barh([0.5,1,2.5],[0,1,2]) # 绘制等高横向矩形
# 在子图网格中的第二个子图(axes[1, 0])上绘制了水平的等高条形图,通过指定y轴和对应的宽度值来创建矩形条
>>> axes[1,1].axhline(0.45) # 绘制与轴平行的横线
# 在子图网格中的第三个子图(axes[1, 1])上绘制了与y轴平行的横线,通过指定y轴的值来定义水平位置
>>> axes[0,1].axvline(0.65) # 绘制与轴垂直的竖线
# 在子图网格中的第四个子图(axes[0, 1])上绘制了与x轴垂直的竖线,通过指定x轴的值来定义垂直位置
>>> ax.fill(x,y,color='blue') # 绘制填充多边形
# 使用fill()函数在Axes对象上绘制了填充多边形,通过连接给定的点(x, y)并填充指定的颜色
>>> ax.fill_between(x,y,color='yellow') # 填充y值和0之间
# 使用fill_between()函数在Axes对象上绘制了填充区域,通过将y值和0之间的区域填充成指定的颜色

3.2 向量场

  接下来,我们继续学习 使用Matplotlib库来添加箭头和绘制二维箭头图,能很好地帮助我们可视化向量场流线图

>>> axes[0,1].arrow(0,0,0.5,0.5) # 为坐标轴添加箭头
# 在子图网格中的第四个子图(axes[0,1])上添加了一个箭头
>>> axes[1,1].quiver(y,z) # 二维箭头
# 在子图网格中的第三个子图(axes[1,1])上绘制了二维箭头图。quiver()函数用于绘制向量场,其中 y 和 z 是对应x轴和y轴上的向量分量
>>> axes[0,1].streamplot(X,Y,U,V) # 二维箭头
# 在子图网格中的第四个子图(axes[0,1])上绘制了二维箭头图。streamplot()函数用于绘制流线图,其中 X 和 Y 是等距离的点网格,U 和 V 是对应点上的向量分量

3.3 数据分布

  我们可以在Matplotlib中绘制 直方图箱形图小提琴图,以便于可视化数据的分布和离群值等统计信息

>>> ax1.hist(y) #直方图
# 在Axes对象 ax1 上绘制了直方图,图用于显示数据的分布情况。y 是要绘制直方图的数据
>>> ax3.boxplot(y) # 箱形图用于展示数据的概要统计信息,包括中位数、四分位数等,y 是要绘制箱形图的数据
>>> ax3.violinplot(z) # 小提琴图结合了箱形图和核密度估计图的特点,可以显示出数据的分布密度和范围,z 是要绘制小提琴图的数据

3.4 二维数据或图片

  以下为使用Matplotlib库 在图形窗口中显示图像,并使用指定的色彩表参数进行配置。

>>> fig, ax = plt.subplots()
# 创建了一个Figure对象(fig)和一个Axes对象(ax),代表整个图形窗口以及绘图区域
>>> im = ax.imshow(img, cmap='gist_earth', interpolation='nearest', vmin=-2, vmax=2)
# 使用imshow()函数在Axes对象上显示图像
# img是要显示的图像数据,cmap参数指定了色彩表的名称(这里使用了'gist_earth'),interpolation参数指定了图像插值的方法,vmin和vmax参数用于设置图像的最小和最大值的范围
# 色彩表或RGB数组

  通过以上的设置,我们就可以 使用Matplotlib显示图像,并根据需要选择合适的色彩表、插值方法以及图像值的范围来呈现图像了。
  接下来我们使用Matplotlib库绘制不同类型的伪彩色图和等高线

>>> axes2[0].pcolor(data2) # 二维数组伪彩色图
# pcolor()函数用于绘制二维数组的伪彩色图,data2 是要绘制的数据
>>> axes2[0].pcolormesh(data) # 二维数组等高线伪彩色图
# pcolormesh()函数用于绘制二维数组的等高线伪彩色图,data 是要绘制的数据
>>> CS = plt.contour(Y,X,U) 
# contour()函数用于绘制等高线图,Y 和 X 分别是数据点的横纵坐标,U 是对应的高度值。CS 是返回的等高线对象
>>> axes2[2].contourf(data1) # 等高线图
# contourf()函数用于绘制等高线图,并为区域着色,data1 是要绘制的数据
>>> axes2[2]= ax.clabel(CS) # 等高线图标签
# clabel()函数用于在等高线图上添加标签,CS 是等高线对象

  通过使用这些函数,我们就可以在Matplotlib绘制二维数组的伪彩色图、等高线伪彩色图和等高线图,并对图像进行 更多的定制,如添加标签等操作。


四、自定义图形

4.1 颜色、色条与色彩表

  还可以使用Matplotlib库绘制不同类型的线图和图像,并进行各种定制,如设置颜色、透明度、添加图例等。

>>> plt.plot(x, x, x, x**2, x, x**3)# 在当前Figure上绘制了三条线图
# plot()函数用于绘制线图,参数x表示X轴的数据,参数x, x2, x, x3 分别表示三条曲线的Y轴数据
>>> ax.plot(x, y, alpha = 0.4)
# 在Axes对象 ax 上绘制了一条线图,并设置了透明度为0.4
# alpha 参数用于控制线图的透明度,x 和 y 分别表示X轴和Y轴的数据
>>> ax.plot(x, y, c='k')
# 在Axes对象 ax 上绘制了一条线图,并设置了颜色为黑色
# c 参数用于设置线图的颜色,'k' 表示黑色,x 和 y 分别表示X轴和Y轴的数据
>>> fig.colorbar(im, orientation='horizontal')
# 在当前Figure上添加了一个水平方向的图例
# colorbar()函数用于添加图例,在这里将 im 对象作为参数传入,并指定了图例的方向为水平
>>> im = ax.imshow(img, cmap='seismic')
# 在Axes对象 ax 上显示了一张图像,并使用色彩表 'seismic' 进行渲染
# imshow()函数用于显示图像,img 是要显示的图像数据,cmap 参数指定了色彩表的名称

4.2 标记

  使用Matplotlib库创建一个Figure对象和一个Axes对象,并绘制散点图和线图。

>>> fig, ax = plt.subplots()# 创建了一个包含一个Axes对象的Figure对象
# 通过 fig 来控制整个图像窗口,通过 ax 来控制具体的绘图区域
>>> ax.scatter(x,y,marker=".")
# 在Axes对象 ax 上绘制了一组散点图
# scatter()函数用于绘制散点图,x 和 y 分别表示X轴和Y轴的数据,marker 参数指定了数据点的标记形状,这里使用 "." 表示小圆点
>>> ax.plot(x,y,marker="o")
# 在Axes对象 ax 上绘制了一条线图,同时每个数据点也被标记出来
# plot()函数用于绘制线图,x 和 y 分别表示X轴和Y轴的数据,marker 参数指定了数据点的标记形状,这里使用 "o" 表示实心圆

  通过使用这些函数,我们可以在Matplotlib中创建Figure对象和Axes对象,并在Axes对象上绘制散点图和线图,也可以对图形进行各种定制,如设置标记形状、颜色等。


4.3 线型

  使用 Matplotlib库绘制了线图,并对线条进行一些定制。

>>> plt.plot(x,y,linewidth=4.0)
# 绘制了一条线图,并设置了线条的宽度为4.0
# plot()函数用于绘制线图,x 和 y 分别表示X轴和Y轴的数据,linewidth 参数指定了线条的宽度
>>> plt.plot(x,y,ls='solid') 
# 绘制了一条线图,并将线条样式设置为实线
# ls 参数用于设置线条的样式,'solid' 表示实线
>>> plt.plot(x,y,ls='--')
# 绘制了一条线图,并将线条样式设置为虚线
# ls 参数用于设置线条的样式,'--' 表示虚线
>>> plt.plot(x,y,'--',x**2,y**2,'-.')
# 绘制了两条线图,一条使用虚线样式,一条使用点划线样式
# 多个数据序列可以在同一个 plot() 函数中传入,使用不同的样式区分
# 这里先绘制了一条虚线样式的线图,再绘制了一条点划线样式的线图
>>> plt.setp(lines,color='r',linewidth=4.0)
# 用于设置已绘制线图的属性
# setp() 函数用于批量设置线条属性,lines 参数指定要设置的线条对象,color 参数设置线条的颜色为红色,linewidth 参数设置线条的宽度为4.0

4.4 文本与标注

  使用了Matplotlib库的text()和annotate()函数在图像中添加文本和注释

>>> ax.text(1, -2.1,'Example Graph', style='italic')
# 在Axes对象 ax 上添加了一个文本标签
# text()函数用于在指定的坐标位置添加文本,第一个参数是X轴坐标,第二个参数是Y轴坐标,第三个参数是要显示的文本内容
>>> ax.annotate("Sine", xy=(8, 0), xycoords='data', xytext=(10.5, 0), textcoords='data', arrowprops=dict(arrowstyle="->",connectionstyle="arc3"),)
# 在Axes对象 ax 上添加了一个箭头和注释
# annotate()函数用于在图像中添加带有注释和箭头的文本,第一个参数是注释的文本内容,xy参数表示箭头尖端的坐标,xycoords参数表示xy坐标的类型,xytext参数表示注释文本的坐标,textcoords参数表示xytext坐标的类型
# 通过arrowprops参数可以设置箭头的样式和连接样式

4.5 数学符号

  使用Matplotlib库的title()函数设置图像的标题

>>> plt.title(r'$sigma_i=15$', fontsize=20)
# 设置了图像的标题为"σi​=15",其中$...$表示使用LaTeX格式的数学公式进行显示。通过在字符串前加上r字符来指定该字符串为原始字符串,以便正确显示特殊字符
# fontsize=20参数用于设置标题的字体大小为20

4.6 尺寸限制、图例和布局

4.6.1 尺寸限制与自动调整

>>> ax.margins(x=0.0,y=0.1) # 添加内边距
>>> ax.axis('equal') # 将图形纵横比设置为1
>>> ax.set(xlim=[0,10.5],ylim=[-1.5,1.5]) # 设置x轴与y轴的限制
>>> ax.set_xlim(0,10.5) # 设置x轴的限制

4.6.2 图例

>>> ax.set(title='An Example Axes', ylabel='Y-Axis', xlabel='X-Axis')
# 设置标题与x、y轴的标签
>>> ax.legend(loc='best') 

4.6.3 标记

# 手动设置X轴刻度
>>> ax.xaxis.set(ticks=range(1,5),ticklabels=[3,100,-12,"foo"])
# 设置Y轴长度与方向 
>>> ax.tick_params(axis='y', direction='inout', length=10)

4.6.4 子图间距

# 调整子图间距
>>> fig3.subplots_adjust(wspace=0.5,hspace=0.3,left=0.125, right=0.9, top=0.9, bottom=0.1)
# 设置画布的子图布局
>>> fig.tight_layout()

4.6.5 坐标轴边线

>>> ax1.spines['top'].set_visible(False) 
# 隐藏顶部坐标轴线
>>> ax1.spines['bottom'].set_position(('outward',10))
# 设置底部边线的位置为outward

五、保存

5.1 保存画布

  使用Matplotlib库的savefig()函数将当前图像保存为一个名为"foo.png"的PNG文件

>>> plt.savefig('foo.png')
# 使用savefig()函数将当前绘制的图像保存为一个PNG文件。'foo.png'是保存的文件名,可以根据需要修改为其他文件名,例如'result.png'

5.2 保存透明画布

  使用Matplotlib库的savefig()函数将当前图像以透明背景保存为一个名为"foo.png"的PNG文件

>>> plt.savefig('foo.png', transparent=True)
# 使用savefig()函数将当前绘制的图像保存为一个PNG文件,并通过将transparent参数设置为True来实现透明背景
# 'foo.png'是保存的文件名,可以根据需要修改为其他文件名,例如'result.png'

六、显示图形

  使用Matplotlib库的show()函数显示当前绘制的图像

>>> plt.show()
# 调用show()函数,它将当前绘制的图像显示在屏幕上
# 这个函数会打开一个图形窗口,并在其中显示图像

  通过使用 show()函数,就可以显示Matplotlib绘制的图像。


七、关闭与清除

  使用Matplotlib库的三个函数来清除图像或关闭窗口

>>> plt.cla() # 清除坐标轴
# 调用cla()函数,它会清除当前坐标轴的内容
>>> plt.clf() # 清除画布
# 调用clf()函数,它会清除整个当前图像的内容,包括坐标轴和所有绘制的内容
>>> plt.close() # 关闭窗口
# 调用close()函数,它会关闭当前图像的窗口

  通过使用这些函数,我们可以清除当前图像的内容或关闭图像窗口。但需要注意的是,cla()和clf()函数不会直接影响图像窗口的显示,而是清除图像或坐标轴的内容close()函数则会关闭图像窗口

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/97651.html

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

相关文章

(排序) 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 ——【Leetcode每日一题】

❓剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 难度:简单 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。 示例: 输入:nums [1…

python+django+mysql高校校园外卖点餐系统--计算机毕设项目

本文的研究目标是以高校校园外卖点餐为对象,使其高校校园外卖点餐为目标,使得高校校园外卖点餐的信息化体系发展水平提高。论文的研究内容包括对个人中心、美食分类管理、用户管理、商家管理、美食信息管理、工作人员管理、安全检查管理、系统管理、订单…

nginx(七十七)nginx与包体的探究

一 nginx与body体 说明:本文不具有生产意义,只是为了nginx知识的闭环,可以跳过即可 --> "数据脱敏"题外话: 对body的CURD,nginx和openresty处理方式不同强调: 本文是基于http演示的,如果是https加密我们是看不到的 ① core模…

postgresql的在windows下的安装

postgresql的在windows下的安装 下载安装步骤超级用户设置密码本地化设置安装信息安装完成 查看postgresql服务pgAdmin的使用打开命令 行工具查询数据库版本 创建数据库 下载 官网地址 https://www.postgresql.org/ 下载页面 https://www.postgresql.org/download/ windows下…

泛型编程 学习笔记

#include "iostream"using namespace std;template<typename T> void Print(T a) {cout << a << endl; }int main() {int a 5;double b 2.3;char c e;string d "sdfasd";Print(a);Print(b);Print(c);Print(d);return 0; } 它可以不用…

“SRP模型+”多技术融合在生态环境脆弱性评价模型构建、时空格局演变分析与RSEI 指数的生态质量评价

近年来&#xff0c;国内外学者在生态系统的敏感性、适应能力和潜在影响等方面开展了大量的生态脆弱性研究&#xff0c;他们普遍将生态脆弱性概念与农牧交错带、喀斯特地区、黄土高原区、流域、城市等相结合&#xff0c;评价不同类型研究区的生态脆弱特征&#xff0c;其研究内容…

k8s服务注册发现

Service 是 将运行在一个或一组pod上的网络应用程序公开为网络服务的方法。 定义service前端为service名称、ip、端口等不变的部分&#xff0c;后端为符合标签选择的pod集合 注册 通过api server提交注册service请求到DNSservice随后得到clusterIP&#xff08;虚拟ip地址&am…

如何解决使用npm出现Cannot find module ‘XXX\node_modules\npm\bin\npm-cli.js’错误

遇到问题&#xff1a;用npm下载组件时出现Cannot find module ‘D&#xff1a;software\node_modules\npm\bin\npm-cli.js’ 问题&#xff0c;导致下载组件不能完成。 解决方法&#xff1a;下载缺少的npm文件即可解决放到指定node_modules目录下即可解决。 分析问题&#xff1…

机器学习知识点总结:什么是GBDT(梯度提升树)

什么是GBDT(梯度提升树) 虽然GBDT同样由许多决策树组成&#xff0c;但它与随机森林由许多不同。 其中之一是GBDT中的树都是回归树&#xff0c;树有分类有回归&#xff0c;区分它们的方法很简单。将苹果单纯分为好与坏的是分类树&#xff0c;如果能为苹果的好坏程度打个分&…

GPT系列总结

1.GPT1 无监督预训练有监督的子任务finetuning https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf 1.1 Unsupervised pre-training &#xff08;1&#xff09;基于一个transformer decoder&#xff0c;通过一个窗口的输入得…

STM32 定时器复习

12MHz晶振的机器周期是1us&#xff0c;因为单片机的一个机器周期由6个状态周期组成&#xff0c;1个机器周期6个状态周期12个时钟周期&#xff0c;因此机器周期为1us。 51单片机常用 for(){__nop(); //执行一个机器周期&#xff0c;若想循环n us&#xff0c;则循环n次。 }软件…

C语言入门_Day7 逻辑运算

目录&#xff1a; 前言 1.逻辑运算 2.优先级 3.易错点 4.思维导图 前言 算术运算用来进行数据的计算和处理&#xff1b;比较运算是用来比较不同的数据&#xff0c;进而来决定下一步怎么做&#xff1b;除此以外还有一种运算叫做逻辑运算&#xff0c;它的应用场景也是用来影…

快速提高写作生产力——使用PicGo+Github搭建免费图床,并结合Typora

文章目录 简述PicGo下载PicGo获取Token配置PicGo结合Typora总结 简述PicGo PicGo: 一个用于快速上传图片并获取图片 URL 链接的工具 PicGo 本体支持如下图床&#xff1a; 七牛图床 v1.0腾讯云 COS v4\v5 版本 v1.1 & v1.5.0又拍云 v1.2.0GitHub v1.5.0SM.MS V2 v2.3.0-b…

Kotlin 基础教程二

constructor 构造器一般情况下可以简化为主构造器 即: class A constructor(参数) : 父类 (参数) 也可以在构造器上直接声明属性constructor ( var name) 这样可以全局访问 init { } 将和成员变量一起初始化 thread {} ktx 默认创建一个线程 susped 挂起 data class 可以简…

博客系统之功能测试

博客系统共有&#xff1a;用户登录功能、发布博客功能、查看文章详情功能、查看文章列表功能、删除文章功能、退出功能 1.登录功能&#xff1a; 1.1测试对象&#xff1a;用户登录 1.2测试用例 方法&#xff1a;判定表 用例 编号 操作步骤预期结果实际结果截图1 1.用户名正确…

【网络基础】数据链路层

【网络基础】数据链路层 文章目录 【网络基础】数据链路层1、对比网络层2、以太网2.1 基本概念2.2 类似技术2.3 以太网帧 3、MAC地址对比IP地址 4、MTU4.1 对IP协议影响4.2 对UDP协议影响4.3 对TCP协议影响4.4 地址、MTU查看 5、ARP协议5.1 协议作用5.2 协议工作流程5.3 数据报…

【FAQ】调用视频汇聚平台EasyCVR的iframe地址,视频无法播放的原因排查

有用户反馈&#xff0c;在调用iframe地址后嵌入用户自己的前端页面&#xff0c;视频无法播放并且要求登录。 安防监控视频汇聚平台EasyCVR基于云边端一体化架构&#xff0c;具有强大的数据接入、处理及分发能力&#xff0c;可提供视频监控直播、云端录像、视频云存储、视频集中…

深入理解JVM——垃圾回收与内存分配机制详细讲解

所谓垃圾回收&#xff0c;也就是要回收已经“死了”的对象。 那我们如何判断哪些对象“存活”&#xff0c;哪些已经“死去”呢&#xff1f; 一、判断对象已死 1、引用计数算法 给对象中添加一个引用计数器&#xff0c;每当有一个地方引用它时&#xff0c;计数器就加一&…

CentOS系统环境搭建(七)——Centos7安装MySQL

centos系统环境搭建专栏&#x1f517;点击跳转 坦诚地说&#xff0c;本文中百分之九十的内容都来自于该文章&#x1f517;Linux&#xff1a;CentOS7安装MySQL8&#xff08;详&#xff09;&#xff0c;十分佩服大佬文章结构合理&#xff0c;文笔清晰&#xff0c;我曾经在这篇文章…

IDEA连接MySQL数据库错误

说明&#xff1a;使用IDEA连接云服务器中的MySQL数据库时&#xff0c;报下面的这个错误&#xff1b; [08S01] Communications link failureThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the serve…