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

Python 之 Matplotlib 第一个绘图程序和基本方法

文章目录

  • 一、第一个 Matplotlib 绘图程序
    • 1. Matplotlib 绘图的基本步骤
  • 二、Matplotlib 的基本方法
    • 1. 图表名称 plt.title()
    • 2. x 轴和 y 轴名称
    • 3. 设置 x 轴和 y 轴的刻度
    • 4. 显示图表 show()
    • 5. 图例 legend()
    • 6. 图例的图例位置设置
    • 7. 显示每条数据的值 x,y 值的位置

一、第一个 Matplotlib 绘图程序

  • 与 NumPy 类似,我们可以使用相同的方法查看 Matplotlib 的版本信息。
import matplotlib
matplotlib.__version__
#'2.2.3'

1. Matplotlib 绘图的基本步骤

  • (1) 首先导入 Matplotlib 包中的 Pyplot 模块,并以 as 别名的形式简化引入包的名称。
from matplotlib import pyplot as plt
#import matplotlib.pyplot as plt
  • (2) 接下来,使用 NumPy 提供的函数 arange() 创建一组数据来绘制图像。
  • 引入 numpy 包,我们获取 -50 到 50 之间的 ndarray 对象(由于 arange() 不含终止值,因此,我们需要到 51)。
import numpy as np
x = np.arange(-50,51)
x
#array([-50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38,
#       -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25,
#       -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12,
#       -11, -10,  -9,  -8,  -7,  -6,  -5,  -4,  -3,  -2,  -1,   0,   1,
#         2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,
#        15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,
#        28,  29,  30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,
#        41,  42,  43,  44,  45,  46,  47,  48,  49,  50])
  • (3) 上述所得 x 的值作用到 x 轴上,而该值对应的平方值,也就是 y 值,使用以下方式获取。
y = x **2
y
#array([2500, 2401, 2304, 2209, 2116, 2025, 1936, 1849, 1764, 1681, 1600,
#       1521, 1444, 1369, 1296, 1225, 1156, 1089, 1024,  961,  900,  841,
#        784,  729,  676,  625,  576,  529,  484,  441,  400,  361,  324,
#        289,  256,  225,  196,  169,  144,  121,  100,   81,   64,   49,
#         36,   25,   16,    9,    4,    1,    0,    1,    4,    9,   16,
#         25,   36,   49,   64,   81,  100,  121,  144,  169,  196,  225,
#        256,  289,  324,  361,  400,  441,  484,  529,  576,  625,  676,
#        729,  784,  841,  900,  961, 1024, 1089, 1156, 1225, 1296, 1369,
#       1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304,
#       2401, 2500], dtype=int32)
  • (4) 使用 plt 的 plot() 函数对 x、y 进行绘制。
plt.plot(x,y)

在这里插入图片描述

二、Matplotlib 的基本方法

方法名说明
title()设置图表的名称
xlabel()设置x轴名称
ylabel()设置y轴名称
xticks(ticks,label,rotation)设置x轴的刻度,rotation旋转角度
yticks()设置y轴的刻度
show()显示图表
legend()显示图例
text(x,y,text)显示每条数据的值 x,y值的位置

1. 图表名称 plt.title()

  • x 轴获得 -50 到 50 之间的 ndarray 对象(由于 arange() 不含终止值,因此,我们需要到 51),y 轴的值是 x 轴的平方。
  • 然后,我们将图表的名称设置为 y= x^2,最后绘制图形即可。
import numpy as np
x = np.arange(-50,51)
y = x **2
plt.title("y= x^2")
plt.plot(x,y)

在这里插入图片描述

  • 那么,我们是否可以将标题写为中文呢?
plt.title("y等于x的平方-")
plt.plot(x,y)

在这里插入图片描述

  • 会发现图表标题跟我们想象中的不太一样,这是因为默认不支持中文:missing from current font 字体丢失造成的。
  • 因此,我们可以通过如下代码修改字体配置。
plt.rcParams["font.sans-serif"]
  • 字体说明详见下表。
中文字体说明
‘SimHei’中文黑体
‘Kaiti’中文楷体
‘LiSu’中文隶书
‘FangSong’中文仿宋
‘YouYuan’中文幼圆
STSong华文宋体
  • 我们可以使用我们需要的中文信息进行图表标题的临时配置,就可以成功完成我们的需求了。
plt.rcParams['font.sans-serif'] = ["FangSong"]
plt.title("y等于x的平方--")
plt.plot(x,y)

在这里插入图片描述

  • 这里我们需要注意的是,在字体设置的过程中,字体名称是不区别大小写的。
  • 因此,我们在尝试下别的字体。
plt.rcParams['font.sans-serif'] = ["SimHei"]
plt.title("y等于x的平方")
plt.plot(x,y)

在这里插入图片描述

  • 但是通过上述的图表当中,我们又会发现,当我们设置了中文字体后,坐标轴的负数又没办法正确显示了。
  • 对此,我们可以创建 x 为 -10 到 10 的整数,y 是 x 的平方。
import numpy as np
x = np.arange(-10,11)
y = x ** 2
plt.plot(x, y)

在这里插入图片描述

  • 这里我们需要注意的是,当我们的字体设置支持中文后,必须设置负号,否则当数值中出现负值时,负号就无法正常显示。
  • 对此,我们可以通过修改坐标轴中的负号编码进行解决。我们可以创建 x 为 -10 到 10 的整数,y 是 x 的平方,并设置标题,用以对比观察。
plt.rcParams['axes.unicode_minus'] = False
x = np.arange(-10,11)
y = x ** 2
plt.title('y=x^2 x取值范围为:[-10,10)')
plt.plot(x, y)

在这里插入图片描述

  • 对上述的字体问题进行总结可得:如果我们想要在标题当中显示中文,就需要修改 2 个配置信息:
  • (1) plt.rcParams[‘font.sans-serif’]=[‘SimHei’] ,用来设置字体样式以正常显示中文标签。
  • (2) plt.rcParams[‘axes.unicode_minus’]=False ,默认是使用 Unicode 负号,设置正常显示字符。

2. x 轴和 y 轴名称

  • x 轴的名称通过 xlabel() 进行设置。
  • y 轴的名称通过 ylabel() 进行设置。
  • 对此,我们创建一个 x 为 -10 到 10 的整数,y 是 x 的平方的数组,并将其标题设置为 y=x^2 x取值范围为:[-10,10),将 x 轴的名称设置为 x 轴,y 轴的名称设置为 y 轴。
x = np.arange(-10,10)
y = x ** 2
plt.title('y=x^2 x取值范围为:[-10,10)')
plt.xlabel("x 轴")
plt.ylabel("y 轴")
​plt.plot(x, y)

在这里插入图片描述

  • 对于上面的图,如果我们觉得字体偏小或线条太细,可以设置标签文字大小和线条粗细。
  • (1) 通过 fontsize 参数,设置文字大小。
  • (2) 通过 linewidth 参数,设置线条粗细。
  • 为了便于与上述图表当中的字体和线条进行比对,我们便创建与上述完全相同的数组(一个 x 为 10 到 10 的整数,y 是 x 的平方的数组,并将其标题设置为 y=x^2 x取值范围为:[-10,10),将 x 轴的名称设置为 x 轴,y 轴的名称设置为 y 轴),并使用 fontsize 参数将文字大小设置为 12,使用 linewidth 参数将线条宽度设置为 5。
x = np.arange(-10,10)
y = x ** 2
plt.title('y=x^2 x取值范围为:[-10,10)',fontsize=16)
plt.xlabel("x 轴",fontsize=12)
plt.ylabel("y 轴")
plt.plot(x, y,linewidth=5)

在这里插入图片描述

  • 我们也可以在一个图表当中,设置两种线条宽度。
plt.plot(x, y,linewidth=1)
plt.plot(x, y,linewidth=5)

在这里插入图片描述

  • 运行结束上面代码后,除了线条变化外,我们发现可以在一张图片中绘制多个线条。
  • 对此,我们创建一个 x 为 10 到 10 的整数,y1 是 x 的平方的数组,y2 就等于 x,并将其标题设置为 y=x^2 x取值范围为:[-10,10),同时,标题的文字大小设置为 16,将 x 轴的名称设置为 x 轴,使用 fontsize 参数将文字大小设置为 12,y 轴的名称设置为 y 轴。
x = np.arange(-10,11)
y1 = x ** 2
y2 = x
plt.title('y=x^2 x取值范围为:[-10,10)',fontsize=16)
plt.xlabel("x 轴",fontsize=12)
plt.ylabel("y 轴")
plt.plot(x, y1)
plt.plot(x, y2)

在这里插入图片描述

3. 设置 x 轴和 y 轴的刻度

  • 我们可以通过 matplotlib.pyplot.xticks(ticks=None, labels=None, **kwargs) 设置 x 轴的刻度。
  • 我们可以通过 matplotlib.pyplot.yticks(ticks=None, labels=None, **kwargs) 设置 y 轴的刻度。
  • 其中参数具有如下含义:
  • ticks:此参数是 xtick 位置的列表,是一个可选参数。如果将一个空列表作为参数传递,则它将删除所有 xticks。
  • label:此参数包含放置在给定刻度线位置的标签,它是一个可选参数。
  • **kwargs:此参数是文本属性,用于控制标签的外观,例如:
  • rotation 表示旋转角度,例如:rotation=45。
  • color表示颜色,例如:color=“red”。
  • 那么,xticks 到底有什么用呢?
  • 其实就是把坐标轴变成我们想要的样子。
  • 例如,我们将 x 轴设置为时间,y 轴设置为销量,x 轴具体数据使用 np.arange() 生成,y 轴具体数据使用 np.random.randint() 生成。
times = np.arange(1990,2020).astype(np.str_)
sales = np.random.randint(500,2000,size=len(times))
plt.xticks(range(0,len(times),2),['%s年'%i for i in times],rotation=45)
plt.plot(times,sales)

在这里插入图片描述
上述图表,就是每个时间点的销量绘图,如果 x 轴的数据是字符串,那么就会将数据全部展示(y 轴销售量数据仍通过 np.random.randint() 生成)。

times = ['2015/6/26', '2015/8/1', '2015/9/6', '2015/10/12', '2015/11/17','2015/12/23','2016/1/28','2016/3/4','2016/4/9',
'2016/5/15','2016/6/20','2016/7/26','2016/8/31','2016/10/6','2016/11/11','2016/12/17']
sales =np.random.randint(500,2000,size=len(times))
plt.plot(times,sales)

在这里插入图片描述

  • 显而易见,在上述图形当中,x 轴存在一个问题。
  • 如果我们只想显示部分时间,或者按照某个规则展示,应该如何处理呢?
  • 这个时候我们就需要用到 xticks。
plt.xticks(range(0,len(times),2))
plt.plot(times,sales)

在这里插入图片描述

  • 通过设置,时间虽然少了,但是如果我们可以让横坐标中的字体倾斜,就可以避免 x 轴坐标刻度重叠。而其中,xticks 第一个参数中元素的值,代表原始数据的索引。
plt.xticks(range(0,len(times),2),labels=['日期:%s'%i for i in times], rotation=45, color='red')
plt.plot(times,sales)

在这里插入图片描述

4. 显示图表 show()

  • show() 可以用来显示所有打开的图形。
  • 在 jupyter notebooks 当中,会自动显示图形。
  • 如果我们想在 jupyter 中出现图形操作菜单,可以使用 matplotlib 中的魔术方法 %matplotlib notebook 即可。
%matplotlib notebook
  • 之后在运行图表生成代码就会得到如下结果。
plt.xticks(range(1,len(times),2),rotation=45)
plt.plot(times,sales)

在这里插入图片描述

  • 如果我们想要返回原先的展示,,用另一个 matplotlib 中的魔术方法 %matplotlib inline 即可。
%matplotlib inline
plt.xticks(range(1,len(times),2),rotation=45)
plt.plot(times,sales)

在这里插入图片描述

5. 图例 legend()

  • 图例 legend() 是集中于地图一角或一侧的地图上各种符号和颜色所代表内容与指标的说明,有助于更好的认识地图。

在这里插入图片描述

  • 对此,我们以上述数组为例,进行图例的设置,一个是收入,另一个是支出,均通过 np.random.randint() 进行数据的生成。
  • 需要注意的是,在使用图例前需要为每个图形设置 label 参数,默认会使用每个图形的 label 值作为图例中的说明。
times = ['2015/6/26', '2015/8/1', '2015/9/6', '2015/10/12', '2015/11/17','2015/12/23','2016/1/28','2016/3/4','2016/4/9',
'2016/5/15','2016/6/20','2016/7/26','2016/8/31','2016/10/6','2016/11/11','2016/12/17']
income =np.random.randint(500,2000,size=len(times))
expenses =np.random.randint(300,1500,size=len(times))
plt.xticks(range(1,len(times),2),rotation=45)
plt.plot(times,income,label="收入")
plt.plot(times,expenses,label="支出")
plt.legend()

在这里插入图片描述

6. 图例的图例位置设置

  • loc 代表了图例在整个坐标轴平面中的位置(一般选取 ‘best’ 这个参数值)。
  • 第一种情况默认是 “best”,图例自动‘安家’在一个坐标面内的数据图表最少的位置。
  • 第二种情况 loc = ‘XXX’ 分别有 0:‘best’ (自动寻找最好的位置)。
位置字符串位置值备注
“best”0自动寻找最好的位置
“upper right”1右上角
“upper left”2左上角
“lower left”3左下角
“lower right”4右下角
“right”5右边中间
“center left”6左边中间
“center right”7右边中间
“lower center”8中间最下面
“upper center”9中间最上面
“center”10正中心
  • 对此,我们以上述数组为例,进行图例的设置,一个是收入,另一个是支出,均通过 np.random.randint() 进行数据的生成。
  • 需要注意的是,在使用图例前需要为每个图形设置 label 参数,默认会使用每个图形的 label 值作为图例中的说明。
  • 我们将图例放到整体的左上角。
times = ['2015/6/26', '2015/8/1', '2015/9/6', '2015/10/12', '2015/11/17','2015/12/23','2016/1/28','2016/3/4','2016/4/9',
'2016/5/15','2016/6/20','2016/7/26','2016/8/31','2016/10/6','2016/11/11','2016/12/17']
​income =np.random.randint(500,2000,size=len(times))
expenses =np.random.randint(300,1500,size=len(times))
​plt.xticks(range(1,len(times),2),rotation=45)
plt.plot(times,income,label="收入")
plt.plot(times,expenses,label="支出")
plt.legend(loc="upper left")

在这里插入图片描述

7. 显示每条数据的值 x,y 值的位置

  • 通过如下代码进行实现。
plt.text(x,y,  string,  fontsize=15,  verticalalignment="top",  horizontalalignment="right")
  • 其中参数具有如下含义:
  • x,y 表示的是坐标值上的值。
  • string 表示说明文字。
  • fontsize 表示字体大小。
  • verticalalignment:(va)垂直对齐方式 ,参数:[ ‘center’ | ‘top’ | ‘bottom’ | ‘baseline’ ]。
  • horizontalalignment:(ha)水平对齐方式 ,参数:[ ‘center’ | ‘right’ | ‘left’ ]。
  • 对此,我们以上述数组为例,进行图例的设置,一个是收入,另一个是支出,均通过 np.random.randint() 进行数据的生成。
  • 需要注意的是,在使用图例前需要为每个图形设置 label 参数,默认会使用每个图形的 label 值作为图例中的说明,图例放到整体的左上角。
  • 将每个数据的 y 值(也就是收入和支出)显示出来。
times = ['2015/6/26', '2015/8/1', '2015/9/6', '2015/10/12', '2015/11/17','2015/12/23','2016/1/28','2016/3/4','2016/4/9',
'2016/5/15','2016/6/20','2016/7/26','2016/8/31','2016/10/6','2016/11/11','2016/12/17']
​income =np.random.randint(500,2000,size=len(times))
expenses =np.random.randint(300,1500,size=len(times))
​plt.xticks(range(1,len(times),2),rotation=45)
plt.plot(times,income,label="收入")
plt.plot(times,expenses,label="支出")
plt.legend(loc="upper left")
for x,y in zip(times,income):plt.text(x,y,'%s万'%y)

在这里插入图片描述

相关文章:

Python 之 Matplotlib 第一个绘图程序和基本方法

文章目录一、第一个 Matplotlib 绘图程序1. Matplotlib 绘图的基本步骤二、Matplotlib 的基本方法1. 图表名称 plt.title()2. x 轴和 y 轴名称3. 设置 x 轴和 y 轴的刻度4. 显示图表 show()5. 图例 legend()6. 图例的图例位置设置7. 显示每条数据的值 x,y 值的位置一、第一个 M…...

数据结构与算法(一):概述

数据结构学了有一年左右的时间了,但是一直没有详细地总结一下,现在回想起来,感觉有些内容忘记了。所以接下来一段时间我将重新归纳总结一下,算是温故而知新了。 一、数据结构 1、定义 数据结构是计算机存储、组织数据的方式。在…...

Spring3之Bean的属性详解

简介 Spring 中大量使用到 Bean 的注入来实现各个模块之间的依赖,本章将详细介绍 Bean 的主要属性 id 和 name 属性 每个 Bean 可以有一个 id 属性,并可以根据该 id 在 IoC 容器中查找该 Bean,该 id 属性值必须在IoC 容器中唯一 可以不指定…...

C语言之结构体内存的计算

结构体的内存 一.提出疑问 结构体占用的是一片连续的内存空间,大小是由成员变量的类型决定的。但并不是计算所有成员变量的类型大小之和那么简单。 先举一个实例: struct student {int age; //4个字节int telephone; //4个字节 }; int main() {struc…...

Java网络编程之UDP和TCP套接字

文章目录一. 网络编程概述二. UDP网络编程1. UDP套接字2. UDP客户端回显服务器程序2.1 UDP回显服务器2.2 UDP客户端2.3 UDP实现查词典的服务器三. TCP网络编程1. TCP套接字2. TCP客户端回显服务器程序2.1 TCP回显服务器2.2 TCP客户端2.3 解决服务器无法同时出力多个客户端的问题…...

Linux进程信号产生以及捕捉

一.什么是信号 生活中,有哪些信号相关的场景呢,比如:红绿灯,闹钟,转向灯等等 1.这里我们要知道,你为什么认识这些信号呢,记住了对应场景下的信号+后续是有”动作“要你执行的 2.我们…...

11. GLSL(OpenGL Shader Language)常用知识点汇总

1. 说明: 在使用OPenGL进行三维模型渲染时,需要使用到两个着色器对模型进行位置设置和颜色设置,分别为顶点着色器和片段着色器,这两个着色器是使用 GLSL 语法进行编写的。这篇文章总结了一些GLSL中的一些基本语法知识。 2. 基本…...

转发一张网络工程师考试的试卷2021.5.15

网络工程师考试 单选题 (30题,每题1分,共30分) 1. 你在一个网络中实现DHCP服务,配置一些计算机成为DHCP客户端,由于工作需要,一台系统为Windows 10 的客户端要把从DHCP服务器获得的地址释放&a…...

AMD发布23.2.1 新驱动 支持开年新作《魔咒之地》

如果说2023年有什么新作,《魔咒之地(Forspoken)》当属开年大作之一,1月25日才在steam平台发售。虽然开售后的表现似乎不如想象中优秀,加之价格相对昂贵,令不少玩家望而却步,但如果只是想尝鲜&am…...

开放平台如何做接口的签名和加解密?

目录安全性功能介绍实现流程开放平台依赖代码AES加解密工具类PlatformConfigRequestUtilsPlatformServiceCommonCodeZuulFilterHelperServerResponsePlatformContactRsaSignatureRsaUtilsStreamUtil开放平台-解密过滤器开放平台-加密过滤器调用方代码公共代码Get-DemoPost-Demo…...

Mr. Cappuccino的第40杯咖啡——Kubernetes之Pod生命周期

Kubernetes之Pod生命周期Pod生命周期官方文档Pod的状态初始化容器案例钩子函数Exec命令TCPSocketHTTPGet案例容器探测Exec命令TCPSocketHTTPGet探测时间重启策略Pod生命周期官方文档 Pod生命周期官方文档 Pod的状态 pending:挂起,apiserver创建了pod资…...

记一次OOM

1,问题描述: 新上了一版代码之后,上游服务请求我们服务失败,报错:“服务不可用”,发现注册中心上服务掉线,查询日志:发现oom:Java heap space,GC overhead limit exceeded。 容易…...

idea插件生成dao类service类controller类以及mapper.xml

idea插件生成dao类service类controller类以及mapper.xml 安装插件Easycode和MybatisX,不用自己写代码 1.Files——》Settings——》Plugins,分别搜索Easycode和MybatisX,点击下载。 2.新建一个springboot模板,选择的依赖如下 3.…...

DML 数据操作语言

概述 DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。 添加数据(INSERT)修改数据(UPDATE)删除数据(DELETE) 添加数据 1、给指定字段…...

PySpark实战一之入门

1、PySpark的编程模型 分三个模块: 数据输入:通过SparkContext对象,完成数据输入 数据处理计算:输入数据后得到RDD对象,对RDD对象的成员方法进行迭代计算 数据输出:最后通过RDD对象的成员方法&#xff0…...

【DockerCE】Docker-CE 23.0.1正式版发布

很意外啊!Docker社区版竟然直接从20.xx.xx版本,升级到23.xx.xx版本了。官网地址(For RHEL/CentOS 7.9):https://download.docker.com/linux/centos/7/x86_64/stable/Packages/23.0.1版本官方安装包如下:# l…...

vscode开发的Vue家用电器维修服务系统nodejs+mysql

主要功能包括管理员:首页、个人中心、用户管理、维修员管理、维修信息管理、维修申请管理、维修处理管理、家电类别管理、配件信息管理、配件领用管理、维修结果管理、家电维修知识管理、公告信息管理、留言板管理,用户:首页、个人中心、维修…...

PyQt5数据库开发1 4.2 配置SQL Server 2008 数据源(ODBC编程)

文章目录 配置SQL Server 2008 数据源(ODBC编程) 1. 了解要配置的数据源服务器名称,以及数据库和对应表 2. 打开控制面板,点击管理工具 3. 双击数据源 4. 选择“用户DSN”选项卡,点击“添加” 5. 选择SQL Serv…...

【JavaEE】多线程代码实例:单例模式与阻塞队列BlockingQueue

目录 单例模式: 什么是单例模式? 单例模式的实现方式: 饿汉模式: 懒汉模式: 基于并发编程对单例模式线程安全问题的讨论: 阻塞队列: 标准库中的阻塞队列: 自实现阻塞…...

算法思想 - 搜索算法

本文主要介绍算法中搜索算法的思想,主要包含BFS,DFS。搜索相关题目深度优先搜索和广度优先搜索广泛运用于树和图中,但是它们的应用远远不止如此。BFS广度优先搜索的搜索过程有点像一层一层地进行遍历,每层遍历都以上一层遍历的结果…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...

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

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

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...

小木的算法日记-多叉树的递归/层序遍历

🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...