当前位置: 首页 > news >正文

Python可视化之Matplotlib

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
    • 1、解决坐标轴刻度负号乱码
    • 2、解决中文乱码问题
    • 3、图形展现形式
  • 一、图形绘制
    • 1.折线图plot
    • 2.散点图plot&scatter
    • 3.柱状图plt.bar&条形图plt.barh
    • 4.直方图plt.hist&堆积直方图
    • 5.饼图plt.pie
    • 6.单个、多个箱线图boxplot
  • 二、绘图风格设置
    • 1.图片保存及查看
    • 2.设置坐标轴上下限
    • 3.axis获取或设置某些轴的便捷方法
    • 4.轴标签xlabel(),ylabel()
    • 5.文本标签图例legend()
    • 6.设置轴刻度和刻度标签
    • 7.网格线设置grid()
    • 8.参考线axhline()
    • 9.参考区域axvspan()
    • 10.指向性注释annotate()
    • 11.text()图形内容细节的无指向注释文本
    • 12.title()添加图形内容标题
  • 三、绘图进阶
    • 1.子图plt.subplot
    • 2.子图plt.subplots
    • 3.plt.figure
    • 4.plt.axes
    • 5.其他建立figure、axes方法
      • 1)通过plt.subplots
      • 2)通过plt.add_subplot
    • 6.面向对象绘图
      • 1)折线图ax.plot
      • 2)散点图ax.scatter
      • 3)柱状图ax.bar
      • 4)plt和ax部分区别


前言

1、解决坐标轴刻度负号乱码

plt.rcParams['axes.unicode_minus']=False

2、解决中文乱码问题

# 以下方式二选一
plt.rcParams['font.sans-serif']=['Simhei']
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] 

3、图形展现形式

在jupyter notebook中有2种图形展现形式
%matplotlib notebook:运行这句命令会在notebook中启动交互式图形
%matplotlib inline:运行这句命令会在notebook中启动静态图形
如果没有运行该命令,默认展示静态图形

%matplotlib notebook
%matplotlib inline

一、图形绘制

1.折线图plot

  • 展现变量的趋势变化
  • 调用方式:plt.plot(x,y,ls=‘-’,lw=w,label=‘plot figure’)
  • 参数:
    x:x轴的数值
    y:y轴的数值
    ls:折现图的线条风格(linestyle)
    lw:折现图的线条宽度(lineweight)
    label:标记图形内容的标签文本
    color:图形颜色
x=np.linspace(0.05,20,200)
y=np.sin(x)fig = plt.figure()#创建一个图形(画板)
plt.plot(x,y,ls='--',lw=2,label='sin(x)',color='r')#调用画图函数画图(类似于在画板上贴画纸进行绘画)
plt.legend()  #legend将标签显示出来
plt.show()
fig.savefig('test.png')

在这里插入图片描述

2.散点图plot&scatter

  • plt.plot()
x=np.linspace(0,10,30)
y=np.sin(x)plt.plot(x,y,marker='o',color='c')
plt.show()

在这里插入图片描述

  • plt.scatter()比plt.plot()更加灵活,比如可以单独空值每个散点与数据匹配,也可以让每个散点具有不同的属性
    函数功能:寻找变量之间关系
    调用方式plt.scatter(x,y,c=‘b’,label=‘scatter,figure’)
    x:x轴数值
    y:y轴数值
    c:散点标记颜色
    label:标签文本
x=np.random.randn(100)
y=np.random.randn(100)
plt.scatter(x,y,c='c',label='散点图')
plt.show()

在这里插入图片描述

x=np.random.randn(100)
y=np.random.randn(100)
colors=np.random.randn(100)
size=np.random.randint(20,500,100)
plt.scatter(x,y,c=colors,s=size,alpha=0.3,cmap='hsv')
plt.colorbar()  #显示颜色条
plt.show()

在这里插入图片描述

3.柱状图plt.bar&条形图plt.barh

函数功能:在x轴上绘制定性数据的分布特征,调用方式:plt.bar(x,y),与之相对应的是条形图
参数

  • x:在X轴上的定性数据类别
  • y:每种定性数据类别数量
  • align:柱体对齐方式
  • color:柱体颜色
  • tick_label:刻度标签值
  • alpha:柱体透明度
  • hatch:柱体填充样式
x=[i for i in range(6)]
y=np.random.randint(45,100,6)
z=('a','b','c','d','e','f')
plt.ylabel('数据')
plt.bar(x,y,align='center',color='c',tick_label=z,hatch='///')
plt.show()

在这里插入图片描述
在这里插入图片描述

4.直方图plt.hist&堆积直方图

函数功能:在X轴绘制定量数据的分布特征
参数说明
x:在X轴上绘制箱体的定量数据输入值
bins:用于确定柱体的个数或柱体边缘范围,除了最后一个柱体作用都为闭区间,其他柱体为左闭右开区间
color:柱体颜色
histype:柱体类型

  • bar:传统的条形直方图,如果是多个数据给出并排排列的条形图
  • step:生成默认的线图填补
  • stepfilled:生成默认的线图填充
    label:图例内容
    rwidth:柱体宽度
x=np.random.normal(loc=10000,scale=3000,size=1000)
bins=range(0,20000,500)plt.hist(x,bins=bins,histtype='bar',color='c',alpha=0.6)
plt.xlabel('test')
plt.ylabel('数据')
plt.show()

在这里插入图片描述
堆积直方图和直方图相比,多添加2个参数
x:参数X需要对应两个数据对象,可以用列表装载
stacked:true即两个直方图堆积,false表示两个直方图并列
label:因为展示两类数据,所有标签需额外设置

x0=np.random.normal(loc=10000,scale=3000,size=1000)
x1=np.random.normal(loc=7000,scale=3000,size=1000)
bins=range(0,20000,500)
x=(x0,x1)
plt.hist(x,bins=bins,histtype='bar',label=['x0','x1'],stacked=True,alpha=0.6)
plt.xlabel('test')
plt.ylabel('数据')
plt.legend(loc='upper right')
plt.show()

在这里插入图片描述
当stacked=False时:
在这里插入图片描述

5.饼图plt.pie

主要参数
x:定性数据的不同类别的百分比
explode:饼片边缘偏离半径的百分比(如果制作分裂式饼图,添加该参数即可)
labels:标记每份饼片的文本标签内容
autopct:饼片文本标签内容对应的数值百分比样式
startangle:从X轴起始位置开始,第一个饼片逆时针旋转的角度
shadow:是否绘制饼片的阴影
colors:饼片的颜色
其他参数:
pctdistance:每个饼片中心与开始之间的比率,默认值为0.6
labeldistance:绘制饼图标签的径向问题距离,默认1.1

percent='0.1','0.15','0.3','0.2','0.2','0.05'
explode=0.1,0.1,0.1,0.1,0.1,0.5  #如果突出某部分,可把对应值修改
autopacts="%.2f%%"
startangle=45
types='优','良','中','一般','次','差'
colors=['r','g','b','c','y','y']
plt.pie(x=percent,explode=explode,labels=types,autopct=autopacts,startangle=startangle,colors=colors)
plt.show()

在这里插入图片描述
不传explode参数时
在这里插入图片描述

6.单个、多个箱线图boxplot

箱体由第一四分位、中位数(第二四分位)和第三四分位数组成,箱须末端之外为离群值
参数:
x:输入数据
whis:四分位距的倍数,用来确定箱须,包括数据范围大小
widths:设置箱体宽度
sym:离群值的标记样式
labels:绘制每一个数据集的刻度标签
patch_artist:是否给箱体添加颜色
notch:如果为True,则箱体由凹痕

  • 单个箱线图
x=np.random.randn(1000)
plt.boxplot(x=x,whis=1.5,widths=0.3,sym='o',labels=['箱体图'],notch=False)
plt.grid(axis='y',ls=':',lw=1,color='grey',alpha=0.4)
plt.show()

在这里插入图片描述

  • 多个箱线图
    数据集参数X需传入多个数据集对象
    标签参数labels列表要包含多个标签字符串
    在这里插入图片描述

二、绘图风格设置

1.图片保存及查看

x=np.linspace(0.05,20,200)
y=np.sin(x)fig = plt.figure()#创建一个图形(画板)
plt.plot(x,y,ls='--',lw=2,label='sin(x)',color='r')#调用画图函数画图(类似于在画板上贴画纸进行绘画)
plt.legend()  #legend将标签显示出来
plt.show()
fig.savefig('test.png')from IPython.display import Image
Image('test.png')

在这里插入图片描述

2.设置坐标轴上下限

plt.xlim:设置X轴范围
plt.ylim:设置y轴范围

x=np.linspace(0.05,20,200)
y=np.sin(x)fig = plt.figure()#创建一个图形(画板)
plt.plot(x,y,ls='--',lw=2,label='sin(x)',color='r')#调用画图函数画图(类似于在画板上贴画纸进行绘画)
plt.legend()  #legend将标签显示出来
plt.xlim(0.1,20)
plt.ylim(-2,2)
plt.show()

在这里插入图片描述

3.axis获取或设置某些轴的便捷方法

  • 使用方法一:plt.axis(xmin,xmax,ymin,ymax)
    xmin:x轴最小取值范围
    xmax:x轴最大取值范围
    ymin:y轴最小取值范围
    ymax:y轴最大取值范围
    在这里插入图片描述
    在这里插入图片描述

  • 使用方法二:plt.axis(str)
    ‘on’:打开轴线和标签
    ‘off’:关闭轴线和标签。等于设置相等的缩放比例,改变轴限制
    ‘scaled’:设置相等的缩放比例,改变绘图狂尺寸
    ‘tight’:设置限制大小足以显示所有数据
    ‘auto’:自动缩放(带数据的填充框)
    在这里插入图片描述

4.轴标签xlabel(),ylabel()

xlabel()函数功能:设置X轴标签文本
调用方式:plt.xlabel(string)
string:标签文本内容
fontsize:字体大小
平移性:上面的函数功能,调用签名和参数说明同样可以平移到函数ylabel上
在这里插入图片描述

5.文本标签图例legend()

函数功能:标识不同图形的文本标签图例
调用方式:plt.legend(loc=‘lower left’)
主要参数:

  • loc:图例在图中的地理位置
    upper right(右上角)、upper left(左上角)、upper center(中间靠上)
    lower left(左下角)、lower right(右下角)、lower center(中间靠下)
    center(中间)、center right(中间靠右)、center left(中间靠左)
  • title:图例标签内容标题参数
  • shadow:线框阴影,True或False
  • fancybox:线框圆角处理参数,True或False
    在这里插入图片描述

6.设置轴刻度和刻度标签

通过plt.xticks()和plt.yticks()函数给x轴和y轴设定刻度,同时通过这2给函数中的label参数来给这些刻度贴上标签
在这里插入图片描述
在这里插入图片描述

7.网格线设置grid()

函数功能:绘制刻度线的网格线
调用方式:plt.grid(linestyle=‘:’,color=‘’)
在这里插入图片描述

8.参考线axhline()

函数功能:绘制平行于x轴的水平参考线,与之对应的方法为plt.axvline()
调用方式:plt.axhline(y=0,c=‘r’,ls=‘:’,lw=‘’)
y:水平参考线的出发点
c:参考线的线调颜色
ls:参考线的线条风格
lw:参考线的线条宽度
在这里插入图片描述

9.参考区域axvspan()

函数功能:绘制垂直于x轴的参考区域,与之相应的函数为axhspan()
调用方式:plt.axvspan(xmin=1.0,xmax=2,facecolor=‘y’,alpha=0.3)
xmin:参考区域起始位置
xmax:参考区域终止位置
facecolor:参考区域填充颜色
alpha:参考区域填充颜色的透明度
在这里插入图片描述

10.指向性注释annotate()

函数功能:添加图形内容细节的指向型注释文本
调用方式:plt.annotate(string,xy=(,),xytext=(,),color=‘b’,arrowprops=dict(arrowstyle=‘->’,color=‘b’)
string:图形内容的注释文本
xy:被注释图形内容的位置坐标
xytext:注释文本的位置坐标
color:注释文本的字体颜色
arrowprops:指示被注释内容的箭头的字典属性:

  • arrowstyle:‘-’,‘->’,‘-[’,‘|-|’,‘-|’,‘<-’,‘<->’,‘<|-’,‘<|-|>’,fancy,simple,wedge(注释文本字体粗细)
  • color:颜色
plt.annotate('测试说明',xy=(np.pi/2,1),xytext=(2.5,1),weight='bold',color='r',arrowprops=dict(arrowstyle='->',color='c'))

在这里插入图片描述

11.text()图形内容细节的无指向注释文本

调用方式:plt.text(x,y,string,weight=‘bold’,color=‘b’)
x:注释文本位置横坐标
y:注释文本位置纵坐标
string:文本内容
weight:字体大小
color:字体颜色

plt.text(2,0.8,'sin(x)曲线',fontsize='12',color='c')

在这里插入图片描述

12.title()添加图形内容标题

调用方式plt.title(string)
string:标题文本
loc:center/left/right
fontdict:可以用字典存储,包含以下参数:

  • family:字体类别
  • size:字体大小
  • color:字体颜色
  • style:字体风格
plt.title('y=sin(x)',color='r',loc='center',fontsize=13)

在这里插入图片描述

三、绘图进阶

1.子图plt.subplot

subplot(C,R,P):划分C行P列,从最左上角向右数起,序号P依次增加,直到换一行,序号页是从左向右增加

x=np.linspace(-2*np.pi,2*np.pi,200)
y1=np.sin(x)
y2=np.cos(x)
y3=x
y4=x**2plt.subplot(221)
plt.plot(x,y1,label='sin(x)')plt.subplot(222)
plt.plot(x,y2,label='cos(x)')plt.subplot(223)
plt.plot(x,y3,label='x')plt.subplot(224)
plt.plot(x,y4,label='x**2')plt.show()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.子图plt.subplots

plt.subplots()其实会返回两个对象,一个是figure画布实例,一个是坐标轴实例axes

  • figure:可以看作一个图形实例,用来包括坐标轴,图形,文字标签等
  • axes:表示一个坐标轴实例,是一个带有刻度和标签的矩阵
  • 先有了figure、axes,就可以使用ax.plot进行绘图了
    因为ax[0]表示第一个子图的实例,ax[1]表示第二个子图实例,所有可以通过ax[0]回到第一个子图绘图
    在这里插入图片描述
fig,ax=plt.subplots(2,1) # 把fig想象成一块画板,ax想象成两张画纸
x=np.linspace(-2*np.pi,2*np.pi,200)
y_01=np.sin(x)
y_02=x**2
ax[0].plot(x,y_01,label="sin(x)") 
ax[0].legend()
ax[0].set_title("图一")
ax[1].plot(x,y_02,label="x**2")
ax[1].legend()
ax[1].set_title("图二")
#如果在画完两幅子图之后,在这个时候想再往图一添加折线图y=x,可以直接通过实例ax[0].plot()来画:
ax[0].plot(x,x,color="r",ls="--",alpha=0.3)
plt.show()

在这里插入图片描述

3.plt.figure

语法:plt.figure(num, figsize, dpi, facecolor, edgecolor, frameon)
参数

  • num:整数或字符串,可选,默认值:无
    如果未提供,将创建新图形和图形编号。图形对象将此数字保存在“数字”中
    如果提供了num,将在该编号的图形中绘图;如果num是一个字符串,该字符串作为图标题。
  • figsize:整数元组,可选,默认值:无;[宽度,高度](英寸);如果未提供,则默认为[6.4,4.8]
  • dpi:整数,可选,默认值:无;这个数字的分辨率。如果未提供,则默认为100
  • facecolor:背景颜色。如果未提供,则默认为"w"。
  • edgecolor:边框颜色。如果未提供,则默认为"w"。
  • frameon:布尔型,可选,默认值:True。如果为False,则禁止绘制图框。
fig_01=plt.figure(1,figsize=[3,3]) #建立“画布1”
ax_01=plt.axes() 
fig_02=plt.figure(2,figsize=[2,2]) #建立“画布2”
ax_02=plt.axes() 
plt.show()

在这里插入图片描述

4.plt.axes

plt.axes用来创建一个新的全窗口轴:
语法:plt.axes([left, bottom, width, height]…)
以左下角为原点,右上角为1,设置轴域的[左坐标,底坐标,宽度,高度]

  • 上面的轴域取值范围是左下角(原点)为0,右上角为1。
  • 左坐标和底坐标两个参数对应的就是——该坐标轴的原点位置,为该图形宽度和高度比例。
  • 宽度和高度的参数就是——该坐标轴原点往外扩展,宽度和高度为图形的比例长度。
x=np.linspace(-2*np.pi,2*np.pi,200)
y=np.sin(x)fig=plt.figure(1,facecolor="gray") #建立“画布1”,设为灰色
ax_1=plt.axes([0,0,0.4,0.4],facecolor="w") #轴域(画纸)颜色设置成白色
ax_1.plot(x,y,ls="-.",color="r")
ax_2=plt.axes([0.4,0.4,0.6,0.6],facecolor="b") #轴域(画纸)颜色设成绿色
ax_2.plot(x,y,ls="-",color="c")
plt.show()

在这里插入图片描述

5.其他建立figure、axes方法

1)通过plt.subplots

x=np.linspace(0,10,1000)
y=np.sin(x)
fig,((ax_01,ax_02),(ax_03,ax_04))=plt.subplots(2,2) # 通过plt.subplots()返回“画板”和“画纸”
ax_01.plot(x,y)
plt.show()

在这里插入图片描述

2)通过plt.add_subplot

fig = plt.figure() # 先创建“画板”
ax_01 = fig.add_subplot(221) # 通过“画板”来调用“画纸”
ax_01.plot(x,y)
ax_02 = fig.add_subplot(222)
ax_03 = fig.add_subplot(223) 
ax_04 = fig.add_subplot(224)plt.show()

在这里插入图片描述

6.面向对象绘图

1)折线图ax.plot

x=np.linspace(-2*np.pi,2*np.pi,200)
y=np.sin(x)
fig = plt.figure()
ax = plt.axes()
ax.plot(x,y,ls='--',color='c',label='test')
ax.legend()
plt.show()

在这里插入图片描述

2)散点图ax.scatter

fig = plt.figure()
ax = plt.axes()x=np.linspace(0.05,20,500)
y=np.random.randint(1,100,500) 
# ax.scatter(x,y,label="scatter figure")
# ax.legend()
plt.scatter(x,y,label="scatter figure")
plt.legend()
plt.show()

在这里插入图片描述

3)柱状图ax.bar

fig = plt.figure()
ax = plt.axes()x=[i for i in range(1,6)] 
y= np.random.randint(45,100,5) 
z=("a","b","c","d","e") 
ax.set_ylabel("text") 
ax.grid(linestyle="-.",color="r",axis="y",alpha=0.15) 
ax.bar(x,y,align="center",color="c",tick_label=z,hatch="|")
plt.show()

在这里插入图片描述

4)plt和ax部分区别

1、绝大多数plt函数都可以直接转换成ax方法,比如plt.plot()–>ax.plot()、plt.legend()–>ax.legend()等。
2、在设置坐标轴上下限、坐标轴标题和图形标题方面,会稍有不同:

  • 设置坐标轴标题:
    plt.xlabel()–>ax.set_xlabel()
    plt.ylabel()–>ax.set_ylabel()
  • 设置坐标轴上下限:
    plt.xlim()–>ax.set_xlim()
    plt.ylim()–>ax.set_ylim()
  • 设置图形标题:
    plt.title()–>ax.set_title()
    3、使用面向对象的方式绘制气泡图,不能设置colorbar,不加colorbar()就不会报错

相关文章:

Python可视化之Matplotlib

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言1、解决坐标轴刻度负号乱码2、解决中文乱码问题3、图形展现形式 一、图形绘制1.折线图plot2.散点图plot&scatter3.柱状图plt.bar&条形图plt.barh4.直方…...

ChatGPT全方位解析:如何培养 AI 智能对话技能?

简介 ChatGPT 的主要优点之一是它能够理解和响应自然语言输入。在日常生活中&#xff0c;沟通本来就是很重要的一门课程&#xff0c;沟通的过程中表达的越清晰&#xff0c;给到的信息越多&#xff0c;那么沟通就越顺畅。 和 ChatGPT 沟通也是同样的道理&#xff0c;如果想要C…...

[C++/Linux] UDP编程

一. UDP函数 UDP&#xff08;用户数据报协议&#xff0c;User Datagram Protocol&#xff09;是一种无连接的网络协议&#xff0c;用于在互联网上交换数据。它允许应用程序发送数据报给另一端的应用程序&#xff0c;但不保证数据报能成功到达&#xff0c;也就是说&#xff0c;它…...

深入探索Linux的lsof命令

在Linux系统中&#xff0c;了解哪些文件被哪些进程打开对于系统管理和问题诊断是极其重要的。这正是lsof命令&#xff0c;即List Open Files&#xff0c;发挥其强大功能的场景。本文旨在详细介绍lsof的起源、底层原理、参数意义&#xff0c;常见用法&#xff0c;并详解其返回结…...

flowable 想改变正在运行的任务,实例版本为最新,需要改哪些表

在Flowable中&#xff0c;要改变正在运行的任务&#xff0c;你需要更新相关的流程定义&#xff0c;具体来说&#xff0c;可能涉及到以下几张表&#xff1a; ACT_RU_TASK&#xff08;运行时任务&#xff09;&#xff1a;这张表包含了当前正在运行的任务信息。你可能需要更新该表…...

统计各位数字都不同的数字个数 II

3032. 统计各位数字都不同的数字个数 II 给你两个 正整数 a 和 b &#xff0c;返回 闭区间 [a, b] 内各位数字都不同的数字个数。 示例 1&#xff1a; 输入&#xff1a;a 1, b 20 输出&#xff1a;19 解释&#xff1a;除 11 以外&#xff0c;区间 [1, 20] 内的所有数字的各…...

Taro框架中的H5 模板基本搭建

1.H5 模板框架的搭建 一个h5 的基本框架的搭建 基础template 阿乐/H5 Taro 的基础模板...

gitea详细介绍

Gitea 是一个轻量级、易于安装的 Git 服务&#xff0c;提供了类似于 GitHub 的功能&#xff0c;如代码托管、问题追踪、团队合作等。它使用 Go 语言开发&#xff0c;可以在自己的服务器上进行部署&#xff0c;从而实现自托管的 Git 服务。Gitea 具有用户友好的界面&#xff0c;…...

应用性能分析系统SkyWalking的安装及使用详解

1. 前言 本文全面介绍了Skywalking的功能特点、安装步骤以及使用方法。首先,文章详细阐述了Skywalking作为一款开源的应用性能管理系统(APM)的核心功能,包括分布式追踪、服务网格观测分析、度量聚合和可视化一体化等。接着,文章提供了Skywalking的详细安装指南,包括环境…...

服务器远程桌面连接不上怎么办?

随着互联网的发展和远程办公的兴起&#xff0c;服务器远程桌面连接成为了许多企业和个人不可或缺的工具。偶尔我们可能会碰到服务器远程桌面连接不上的情况&#xff0c;这时候我们需要找到解决办法&#xff0c;确保高效地远程访问服务器。 天联组网——突破远程连接障碍 在我们…...

C++之STL的algorithm(8)之适配器(bind等)整理

C之STL的algorithm&#xff08;8&#xff09;之适配器&#xff08;bind等&#xff09;整理 注&#xff1a;整理一些突然学到的C知识&#xff0c;随时mark一下 例如&#xff1a;忘记的关键字用法&#xff0c;新关键字&#xff0c;新数据结构 C 的适配器整理 C之STL的algorithm&…...

部分国企笔试总结

2024.3.30相城区某国企笔试 客观题&#xff0c;30分 类似考公行测题&#xff08;大部分&#xff09;部分计算机专业基础知识&#xff08;仅几题&#xff09; 主观题&#xff0c;70分 网络安全类一道C编程题&#xff1a;用户输入圆半径r&#xff0c;程序计算面积和周长并输出…...

《QT实用小工具·二十二》多种样式导航按钮控件

1、概述 源码放在文章末尾 该项目实现了多种样式的导航按钮控件 可设置文字的左侧、右侧、顶部、底部间隔。 可设置文字对齐方式。 可设置显示倒三角、倒三角边长、倒三角位置、倒三角颜色。 可设置显示图标、图标间隔、图标尺寸、正常状态图标、悬停状态图标、选中状态图标…...

不定长顺序表

一.不定长顺序表的结构: typedef struct DSQList{ int* elem;//动态内存的地址 int length;//有效数据的个数 int listsize;//总容量 }DSQList,*DPSQList; 很明显,为了能实现扩容(否则如何实现再次判满呢?),我们必须要在定长顺序表的基础上增加一个总容量;结构示意图如下: 二…...

5.网络编程-socker(golang版)

目录 一、什么是socket&#xff1f; 二、Golang中使用TCP TCP服务端 TCP客户端​​​​​​​ 三、TCP黏包&#xff0c;拆包 1.什么是粘包&#xff0c;拆包&#xff1f; 2.为什么UDP没有粘包&#xff0c;拆包&#xff1f; 3.粘包拆包发生场景 4.TCP黏包 黏包服务端 …...

网格矢量如何计算莫兰指数

网格矢量如何计算莫兰指数 引言 遇到一个问题&#xff0c;计算矢量网格的莫兰指数。 概念解释 莫兰指数 莫兰指数&#xff08;Moran’s Index&#xff09;是一种空间自相关指标&#xff0c;用于衡量空间数据的相似性和聚集程度。它可以用来描述一个区域与其邻近区域之间的属…...

《containerd原理剖析与实战》大模型时代下如何学习云原生

大模型与云原生 近年来&#xff0c;大语言模型的热度可谓是愈发高涨&#xff0c;尤其是今年年初 Sora 的出现&#xff0c;更是让全球再次看到了AIGC 的巨大威力。 Sora 生成实例视频---几头巨大的长毛猛犸踏着积雪的草地而来 在当前大模型流行的时代下&#xff0c;云原生技术…...

【实用工具】使用飞书机器人监控工程日志

1.创建一个飞书群聊&#xff0c;设置-->群机器人-->添加机器人-->自定义机器人-->修改机器人名称-->添加 2.复制webhook地址 3.编写日志请求代码 import logging import requests import json import os from datetime import datetime import time import sub…...

NIKKE胜利女神PC怎么设置中文 手把手教你设置中文教程

这个游戏中的妮姬分四个企业&#xff0c;其中朝圣者这个派别的妮姬很少而且不在愿望单理&#xff0c;朝圣者的所有姐姐都很哇塞&#xff0c;红莲更是其中的大姐大。一般想抽朝圣者只能靠歪或者出限定卡池&#xff0c;举个栗子&#xff0c;我入坑的时候 朝圣者 神罚 是限定卡池&…...

【leetcode面试经典150题】2.移除元素(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...