机器学习 Day02,matplotlib库绘图

news2025/3/12 0:06:40

1.matplotlib图像结构

  • 容器层:画板,画布,坐标系
  • 辅助层:刻度,标题,网格,图例等
  • 图像层:折线图(主讲),饼图,直方图,柱状图等等

2.基本画图框架

matplotlib.pyplot 模块。这是 Python 中一个用于数据可视化的强大模块,其中的函数与 Matlab 的绘图函数类似,方便易用,一般通过 import matplotlib.pyplot as plt 导入。

以下是使用 matplotlib.pyplot 绘图的标准流程:

创建画布:使用 plt.figure() 函数创建一个空白画布,如需自定义画布大小和分辨率,可这样写:

import matplotlib.pyplot as plt
# 创建一个宽为8英寸,高为6英寸,分辨率为100dpi的画布
fig = plt.figure(figsize=(8, 6), dpi=100) 

绘制图像:以折线图为例,假设我们有一组数据,使用 plt.plot() 函数进行绘制:

显示图像:使用 plt.show() 函数展示绘制好的图像

比如要展示上海一周的天气温度,代码如下:

import matplotlib.pyplot as plt
# 创建画布,宽和高都设为10英寸,分辨率100dpi
plt.figure(figsize=(10, 10), dpi=100) 
# 横坐标表示周一到周日
week_days = [1, 2, 3, 4, 5, 6 ,7] 
# 纵坐标表示对应每天的温度
temperatures = [17,17,18,15,11,11,13] 
# 绘制折线图
plt.plot(week_days, temperatures) 
# 显示图像
plt.show() 

3.基本修饰

3.1图的刻度

3.1.1准备数据并绘制初始折线图:如第二张图代码所示,先导入matplotlib.pyplotrandom模块。通过range(60)生成表示 60 分钟的横坐标数据x,使用random.uniform(15, 18)生成 15 到 18 度之间的随机温度数据y_shanghai作为纵坐标。接着创建一个宽 20 英寸、高 8 英寸、分辨率 100dpi 的画布,再用plt.plot(x, y_shanghai)绘制折线图。

import matplotlib.pyplot as plt
import random

x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
plt.figure(figsize=(20, 8), dpi=100)
plt.plot(x, y_shanghai)

3.1.2添加 x,y 轴刻度

3.1.2.1生成刻度标签数据:如第三张图代码,对于 x 轴刻度标签,使用列表推导式["11点{}分".format(i) for i in x]生成从 “11 点 0 分” 到 “11 点 59 分” 的标签列表x_ticks_label;对于 y 轴刻度,简单使用range(40)生成从 0 到 39 的刻度值y_ticks

x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)

3.1.2.2设置刻度显示 :在 Matplotlib 中不能直接用字符串修改坐标刻度,需同时传入刻度位置和对应的标签plt.xticks(x[::5], x_ticks_label[::5])表示每隔 5 个数据点设置一个 x 轴刻度标签,这样能避免刻度标签过于密集;plt.yticks(y_ticks[::5])表示每隔 5 个刻度值显示一个 y 轴刻度。

可以理解为第一个参数表示隔多少取一个刻度,而第二个参数表示显示什么和第一个参数意义对应。

plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])

3.1.3显示图像

plt.show()

注意,这个库中想要显示中文字体要进行如下操作

from pylab import mpl

# 设置显示中文字体为黑体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

3.2 添加网格线和标题坐标轴

3.2.1. 添加网格显示

使用plt.grid()函数可以为图形添加网格,方便更清晰地观察图形对应的值。以下是示例代码:

import matplotlib.pyplot as plt
import random

# 准备数据
x = range(60)
y = [random.uniform(15, 18) for _ in x]

# 创建画布
plt.figure(figsize=(10, 6), dpi=100)

# 绘制折线图
plt.plot(x, y)

# 添加网格显示
plt.grid(True, linestyle='--', alpha=0.5) 
# True表示显示网格;linestyle='--'设置网格线为虚线;alpha=0.5设置网格线透明度为0.5

# 显示图像
plt.show()

在上述代码中,首先导入必要的模块,然后生成模拟的时间和温度数据。创建画布并绘制折线图后,通过plt.grid()函数添加网格,按照第一张图中的参数设置,让网格以虚线形式、50% 的透明度显示在图形上。

3.2.2. 添加描述信息

使用plt.xlabel()plt.ylabel()plt.title()函数分别为图形添加 x 轴标签、y 轴标签和标题,同时可以通过fontsize参数调整字体大小。示例代码如下:

import matplotlib.pyplot as plt
import random

# 准备数据
x = range(60)
y = [random.uniform(15, 18) for _ in x]

# 创建画布
plt.figure(figsize=(10, 6), dpi=100)

# 绘制折线图
plt.plot(x, y)

# 添加网格显示
plt.grid(True, linestyle='--', alpha=0.5) 

# 添加描述信息
plt.xlabel("时间", fontsize=12)  # 添加x轴标签并设置字体大小为12
plt.ylabel("温度", fontsize=12)  # 添加y轴标签并设置字体大小为12
plt.title("中午11点0分到12点之间的温度变化图示", fontsize=20) 
# 添加标题并设置字体大小为20

# 显示图像
plt.show()

3.3 图片保存

import matplotlib.pyplot as plt
import random

# 准备数据
x = range(60)
y = [random.uniform(15, 18) for _ in x]

# 创建画布
plt.figure(figsize=(10, 6), dpi=100)

# 绘制折线图
plt.plot(x, y)

# 添加网格显示
plt.grid(True, linestyle='--', alpha=0.5)

# 添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点到12点温度变化图")

# 保存图像,指定保存路径和文件名,这里保存在当前目录下为test.png
plt.savefig("test.png")

# 显示图像
plt.show()
  • 保存图像的方法:使用plt.savefig()函数可以将绘制好的图像保存到指定路径。如代码plt.savefig("test.png"),表示将图像以test.png文件名保存,文件格式为 PNG。你可以根据需要修改文件名和路径,如plt.savefig("C:/images/weather_chart.jpg") ,将图像保存到 C 盘的 images 文件夹下,格式为 JPEG。
  • 注意事项plt.show()会释放figure资源,如果先执行plt.show()再保存图片,保存的将是一张空图片。因此,建议在调用plt.show()之前先调用plt.savefig()保存图像。

4.一张图绘制多个图像,添加图例

import matplotlib.pyplot as plt
import random

# 准备横坐标数据,表示11点到12点的60分钟
x = range(60)

# 准备上海的温度数据,在15到18度之间随机取值
y_shanghai = [random.uniform(15, 18) for _ in x]

# 准备北京的温度数据,在1到3度之间随机取值
y_beijing = [random.uniform(1, 3) for _ in x]

# 创建画布
plt.figure(figsize=(10, 6), dpi=100)

# 绘制上海的温度变化折线图
plt.plot(x, y_shanghai, label='上海')

# 绘制北京的温度变化折线图,设置颜色为红色,线条样式为虚线
plt.plot(x, y_beijing, color='r', linestyle='--', label='北京')

# 添加网格显示,方便观察数据
plt.grid(True, linestyle='--', alpha=0.5)

# 添加x轴、y轴标签和标题
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点到12点城市温度变化图")

# 添加图例,显示每条折线对应的城市名称
plt.legend()

# 保存图像
plt.savefig("city_temperature.png")

# 显示图像
plt.show()
  1. 导入模块:开头导入matplotlib.pyplot用于绘图,random用于生成随机温度数据。
  2. 数据准备:分别生成表示 60 分钟的横坐标数据x,以及上海和北京的温度数据y_shanghaiy_beijing,这些数据都是随机生成的模拟值。
  3. 创建画布:使用plt.figure()创建一个指定大小和分辨率的画布。
  4. 绘制图像
    • 第一次调用plt.plot()绘制上海的温度变化折线图,并通过label参数设置标签为 “上海”。
    • 第二次调用plt.plot()绘制北京的温度变化折线图,通过color参数设置线条颜色为红色,linestyle参数设置线条样式为虚线,同时也设置了label为 “北京”,方便后续添加图例。
  5. 添加辅助元素
    • 使用plt.grid()添加网格,使图形数据更易观察。
    • 使用plt.xlabel()plt.ylabel()plt.title()分别添加 x 轴标签、y 轴标签和标题。
    • 使用plt.legend()添加图例,根据之前plot函数中设置的label,自动显示每条折线对应的城市名称。
  6. 保存和显示图像:先使用plt.savefig()保存图像,再使用plt.show()显示图像,注意保存要在显示之前,避免保存到空图。

显示图例函数

plt.legend()函数,用于在 Matplotlib 绘制的图形中显示图例:

  • 基本作用:当在一个坐标系中绘制多个图形时,plt.legend()能根据plt.plot()等绘图函数中设置的label参数,展示每个图形对应的标签说明,方便区分不同图形代表的数据 。
  • 使用方法
    • 首先在绘图函数(如plt.plot() )中通过label参数为图形设置标签,例如plt.plot(x, data1, label="数据1") 、plt.plot(x, data2, label="数据2") 。
    • 然后调用plt.legend()显示图例。若仅写plt.legend() ,会使用默认设置显示图例;若要指定图例位置,可使用loc参数,如plt.legend(loc="best") 让系统自动选最佳位置,loc还支持多种取值,图片中的表格列出了位置字符串(如'upper right' )和对应的位置代码(如1 )。
  • 注意事项:只在plt.plot()中设置label不能直接显示图例,必须调用plt.legend()才能将图例呈现在图形上。

至此画一个简单的图已经完善,这是完整代码:

import matplotlib.pyplot as plt
import random

# 0.准备数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
y_beijing = [random.uniform(1, 3) for i in x]

# 1.创建画布
plt.figure(figsize=(20, 8), dpi=100)

# 2.绘制图像
plt.plot(x, y_shanghai, label="上海")
plt.plot(x, y_beijing, color="r", linestyle="--", label="北京")

# 2.1 添加x,y轴刻度
# 构造x,y轴刻度标签
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)

# 刻度显示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])

# 2.2 添加网格显示
plt.grid(True, linestyle="--", alpha=0.5)

# 2.3 添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点--12点某城市温度变化图", fontsize=20)

# 2.4 添加图例
plt.legend(loc=0)

# 2.5 图像保存
plt.savefig("./test.png")

# 3.图像显示
plt.show()

5.多个坐标系显示多个图

其实差不多,只不过是调用对象不一样,调用的方法有差别。

  • 当需要将多个数据可视化结果展示在同一幅图的不同坐标系中时,可使用plt.subplots函数。如想同时展示上海和北京中午 11 点到 12 点的天气温度变化图,就可利用该函数。
  • 函数介绍matplotlib.pyplot.subplots(nrows=1, ncols=1, **fig_kw),其中nrowsncols用于设置子图的行数和列数,默认都为 1;该函数返回两个值,fig代表整个图像对象,axes返回相应数量的坐标系对象。所以需要两个变量去接收,之后可以用axes这个变量当做每个子图去使用,见代码。
  • axes数组表示方法:

    axes数组的索引从 0 开始,通过axes[row_index, col_index]来定位特定的子坐标系,其中row_index是行索引,col_index是列索引。例如:axes[0, 0]:表示第 1 行第 1 列的子坐标系。axes[0, 1]:表示第 1 行第 2 列的子坐标系。axes[1, 0]:表示第 2 行第 1 列的子坐标系。axes[1, 1]:表示第 2 行第 2 列的子坐标系。

  • 设置方法差异:相比之前直接用plt的方式,面向对象的方法中设置坐标轴刻度、标签等需通过axes对象的方法,如set_xticks(设置 x 轴刻度)、set_xlabel(设置 x 轴标签)等。
  • 代码示例讲解
    • 创建画布fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=100),创建了一个包含 1 行 2 列子图的画布,宽 20 英寸,高 8 英寸,分辨率 100dpi,fig为整个图像对象,axes是包含两个子坐标系对象的数组。
    • 绘制图像:通过axes[0].plot(x, y_shanghai, label="上海")在第一个子坐标系绘制上海温度变化图 ;axes[1].plot(x, y_beijing, color="r", linestyle="--", label="北京")在第二个子坐标系绘制北京温度变化图。
import matplotlib.pyplot as plt
import random

# 准备数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
y_beijing = [random.uniform(1, 3) for i in x]

# 创建画布
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=100)

# 绘制图像
axes[0].plot(x, y_shanghai, label="上海")
axes[1].plot(x, y_beijing, color="r", linestyle="--", label="北京")

# 为第一个子图添加辅助元素
axes[0].set_title("上海中午11点--12点温度变化图")
axes[0].set_xlabel("时间")
axes[0].set_ylabel("温度")
axes[0].grid(True, linestyle="--", alpha=0.5)
axes[0].legend()

# 为第二个子图添加辅助元素
axes[1].set_title("北京中午11点--12点温度变化图")
axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[1].grid(True, linestyle="--", alpha=0.5)
axes[1].legend()

# 显示图像
plt.show()

但是这里注意在显示刻度的时候有一个差别,它不能像唯一一个图一样用两个参数去做,而需要拆分为两个函数

这是一个图 这是多个图:

import matplotlib.pyplot as plt
import random

# 准备横坐标数据,表示11点到12点的60分钟
x = range(60)
# 准备上海的温度数据,在15到18度之间随机取值
y_shanghai = [random.uniform(15, 18) for _ in x]
# 准备北京的温度数据,在1到3度之间随机取值
y_beijing = [random.uniform(1, 3) for _ in x]

# 创建2×1的子图布局
fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(10, 8))

# 绘制图像
axes[0].plot(x, y_shanghai, label="上海")
axes[1].plot(x, y_beijing, color="r", linestyle="--", label="北京")

# 2.1 添加x,y轴刻度
# 设置x,y轴刻度 
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)

# 修改x,y轴坐标刻度显示
axes[0].set_xticks(x[::5])  # 为第一个子坐标系的x轴每隔5个数据点设置一个刻度
axes[0].set_yticks(y_ticks[::5])  # 为第一个子坐标系的y轴每隔5个刻度值设置一个刻度
axes[0].set_xticklabels(x_ticks_label[::5])  # 为第一个子坐标系的x轴刻度设置对应标签,每隔5个刻度显示一个

axes[1].set_xticks(x[::5])  # 为第二个子坐标系的x轴每隔5个数据点设置一个刻度
axes[1].set_yticks(y_ticks[::5])  # 为第二个子坐标系的y轴每隔5个刻度值设置一个刻度
axes[1].set_xticklabels(x_ticks_label[::5])  # 为第二个子坐标系的x轴刻度设置对应标签,每隔5个刻度显示一个


# 显示图像
plt.show()
  • 对于第一个子坐标系(axes[0]
    • axes[0].set_xticks(x[::5]):设置 x 轴刻度位置,每隔 5 个数据点显示一个刻度 ,x[::5]表示从x中每隔 5 个元素取一个。
    • axes[0].set_yticks(y_ticks[::5]):设置 y 轴刻度位置,每隔 5 个刻度值显示一个刻度 ,y_ticks[::5]表示从y_ticks中每隔 5 个元素取一个。
    • axes[0].set_xticklabels(x_ticks_label[::5]):设置 x 轴刻度标签,与set_xticks配合,每隔 5 个刻度显示对应的标签。
  • 对于第二个子坐标系(axes[1]
    • axes[1].set_xticks(x[::5])axes[1].set_yticks(y_ticks[::5]) 、axes[1].set_xticklabels(x_ticks_label[::5]) :作用与在axes[0]中的设置类似,分别设置第二个子坐标系的 x 轴刻度位置、y 轴刻度位置以及 x 轴刻度标签 。

 这是整体代码:

import matplotlib.pyplot as plt
import random

# 0. 准备数据
# 生成表示60分钟的时间序列,作为横坐标数据
x = range(60)
# 生成上海的温度数据,每个数据在15到18度之间随机取值
y_shanghai = [random.uniform(15, 18) for i in x]
# 生成北京的温度数据,每个数据在1到3度之间随机取值
y_beijing = [random.uniform(1, 3) for i in x]

# 1. 创建画布
# 创建一个1行2列的子图布局,设置画布大小为宽20英寸,高8英寸,分辨率为100dpi
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=100)

# 2. 绘制图像
# 在第一个子坐标系中绘制上海的温度变化折线图,并添加标签
axes[0].plot(x, y_shanghai, label="上海")
# 在第二个子坐标系中绘制北京的温度变化折线图,设置颜色为红色,线条样式为虚线,并添加标签
axes[1].plot(x, y_beijing, color="r", linestyle="--", label="北京")

# 2.1 添加x,y轴刻度
# 构造x轴刻度标签,格式为“11点几分”
x_ticks_label = ["11点{}分".format(i) for i in x]
# 生成y轴刻度值,范围是0到39
y_ticks = range(40)

# 修改x,y轴坐标刻度显示
# 为第一个子坐标系的x轴每隔5个数据点设置一个刻度
axes[0].set_xticks(x[::5])
# 为第一个子坐标系的y轴每隔5个刻度值设置一个刻度
axes[0].set_yticks(y_ticks[::5])
# 为第一个子坐标系的x轴刻度设置对应标签,每隔5个刻度显示一个
axes[0].set_xticklabels(x_ticks_label[::5])

# 为第二个子坐标系的x轴每隔5个数据点设置一个刻度
axes[1].set_xticks(x[::5])
# 为第二个子坐标系的y轴每隔5个刻度值设置一个刻度
axes[1].set_yticks(y_ticks[::5])
# 为第二个子坐标系的x轴刻度设置对应标签,每隔5个刻度显示一个
axes[1].set_xticklabels(x_ticks_label[::5])

# 2.2 添加网格显示
# 为第一个子坐标系添加虚线网格,不透明度为1(完全不透明)
axes[0].grid(True, linestyle="--", alpha=1)
# 为第二个子坐标系添加虚线网格,不透明度为1(完全不透明)
axes[1].grid(True, linestyle="--", alpha=1)

# 2.3 添加描述信息
# 为第一个子坐标系设置x轴标签为“时间”
axes[0].set_xlabel("时间")
# 为第一个子坐标系设置y轴标签为“温度”
axes[0].set_ylabel("温度")
# 为第一个子坐标系设置标题为“中午11点-12点某城市温度变化图”,字体大小为20
axes[0].set_title("中午11点-12点某城市温度变化图", fontsize=20)

# 为第二个子坐标系设置x轴标签为“时间”
axes[1].set_xlabel("时间")
# 为第二个子坐标系设置y轴标签为“温度”
axes[1].set_ylabel("温度")
# 为第二个子坐标系设置标题为“中午11点-12点某城市温度变化图”,字体大小为20
axes[1].set_title("中午11点-12点某城市温度变化图", fontsize=20)

# 2.4 显示图例
# 在第一个子坐标系中显示图例,位置自动选择最佳
axes[0].legend(loc=0)
# 在第二个子坐标系中显示图例,位置自动选择最佳
axes[1].legend(loc=0)

# 2.5 图像保存
# 将绘制好的图像保存为当前目录下的test.png文件
plt.savefig("./test.png")

# 3. 图像显示
# 显示绘制好的图形
plt.show()

6.对于其他图只是创建时把plot改一下并且后面参数对应即可,自己可查 

记一下:

plt.figure(figsize=(长,宽),dpi=清晰度)创建画布

plt.plot(x,y)

plt.x/yticks()掌控刻度,不可直接中文

plt.x/ylable()掌握坐标标题

plt.title()掌握标题

plt.grid(True,linestyle="样式",alpha=透明度)掌握网格线

plt.legend(loc="")掌握图例,在plot里加lable

plt.show()展示

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL中有哪几种锁?

大家好,我是锋哥。今天分享关于【MySQL中有哪几种锁?】面试题。希望对大家有帮助; MySQL中有哪几种锁? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 MySQL 中,锁是用于确保数据的一致性和并发控制的机…

Unity单例模式更新金币数据

单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取该实例。在游戏开发中,单例模式非常适合用于管理全局唯一的数据,比如玩家的金币数量。通过使用单例…

【javaEE】多线程(进阶)

1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…

Vue3实战学习(Element-Plus常用组件的使用(输入框、下拉框、单选框多选框、el-image图片))(上)(5)

目录 一、Vue3工程环境配置、项目基础脚手架搭建、Vue3基础语法、Vue3集成Element-Plus的详细教程。(博客链接如下) 二、Element-Plus常用组件使用。 &#xff08;1&#xff09;el-input。(input输入框) <1>正常状态的el-input。 <2>el-input的disable状态。 <3…

C++ 链表List使用与实现:拷贝交换与高效迭代器细致讲解

目录 list的使用&#xff1a; 构造与赋值 元素访问 修改操作 容量查询 链表特有操作 拼接&#xff08;Splice&#xff09; C11 新增方法 注意&#xff1a; stl_list的模拟实现&#xff1a; 一、链表节点设计的艺术 1.1 结构体 vs 类的选择 二、迭代器实现的精髓 2…

知乎后台管理系统:数据库系统原理实验1——数据库基础概念

实验背景 通过练习绘制语义网络&#xff0c;加深对于基本概念之间关系的理解和掌握。掌握在VISIO中绘制能准确表达基本概念之间关系的语义网络的技能。了解并比较数据模型的Chen’s表示法和UML表示法。理解关系模型设计中的完整性约束的重要性。掌握在Linux操作系统下远程访问…

docker compose 以redis为例

常见docker compose 命令 》》注意这个是旧版本的&#xff0c;新版本 docker 与compose 之间没有 - 新版本的 docker compose 把 version 取消了 &#xff0c;redis 默认是没有配置文件的 &#xff0c;nginx&#xff0c;mysql 默认是有的 services:redis:image: redis:lat…

ES C++客户端安装及使用

1. ES 介绍 Elasticsearch &#xff0c; 简称 ES &#xff0c;它是个开源分布式搜索引擎&#xff0c;它的特点有&#xff1a;分布式&#xff0c;零配 置&#xff0c;自动发现&#xff0c;索引自动分片&#xff0c;索引副本机制&#xff0c; restful 风格接口&#xff0c;多…

【软件工程】一篇入门UML建模图(状态图、活动图、构件图、部署图)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;软件开发必练内功_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…

应急响应--流量分析

&#xff08;一&#xff09;Cobalt Strike流量特征分析 1.HTTP特征 源码特征&#xff1a; 在流量中&#xff0c;通过http协议的url路径&#xff0c;在checksum8解密算法计算后&#xff0c;32位的后门得到的结果是92&#xff0c;64位的后门得到的结果是93&#xff0c;该特征符…

自然语言处理:高斯混合模型

介绍 大家好&#xff0c;博主又来给大家分享知识了&#xff0c;今天给大家分享的内容是自然语言处理中的高斯混合模型。 在自然语言处理这个充满挑战与机遇的领域&#xff0c;我们常常面临海量且复杂的文本数据。如何从这些数据中挖掘出有价值的信息&#xff0c;对文本进行有…

【C++指南】一文总结C++类和对象【中】

&#x1f31f; 各位看官好&#xff0c;我是egoist2023&#xff01; &#x1f30d; 种一棵树最好是十年前&#xff0c;其次是现在&#xff01; &#x1f680; 今天来学习C类和对象的语法知识。注意&#xff1a;在本章节中&#xff0c;小编会以Date类举例 &#x1f44d; 如果觉得…

再聊 Flutter Riverpod ,注解模式下的 Riverpod 有什么特别之处,还有发展方向

三年前我们通过 《Flutter Riverpod 全面深入解析》 深入理解了 riverpod 的内部实现&#xff0c;而时隔三年之后&#xff0c;如今Riverpod 的主流模式已经是注解&#xff0c;那今天就让我们来聊聊 riverpod 的注解有什么特殊之处。 前言 在此之前&#xff0c;我们需要先回忆…

Go语言集成DeepSeek API和GoFly框架文本编辑器实现流式输出和对话(GoFly快速开发框架)

说明 本文是GoFly快速开发框架集成Go语言调用 DeepSeek API 插件&#xff0c;实现流式输出和对话功能。为了方便实现更多业务功能我们在Go服务端调用AI即DeepSeek接口&#xff0c;处理好业务后再用Gin框架实现流失流式输出到前端&#xff0c;前端使用fetch请求接收到流式的mar…

docker不停机部署

背景 最近做大疆项目时&#xff0c;后台更新部署时&#xff0c;机场和无人机就会掉线。设备自动重连注册时间比较长&#xff0c;应用长时间不可用。所以需要灰色发布服务。docker-compose的swarm模式可解决此问题。 服务构建脚本Dockerfile # 使用官方Java基础镜像&#xff…

ZLG嵌入式笔记 | ZLG核心板散热设计指引

在嵌入式系统设计中&#xff0c;散热是影响处理器性能与稳定性的关键问题。本文聚焦于高端嵌入式处理器的散热设计&#xff0c;探讨核心板的热设计与系统级热设计方法&#xff0c;以及导热材料和布局的建议&#xff0c;为解决高温问题提供参考。 用高端嵌入式处理器设计系统&am…

[Java]使用java进行JDBC编程

首先要从中央仓库下载api(类似驱动程序)&#xff0c;为了链接java和mysql 下载jar包&#xff0c;需要注意的是jar包的版本要和mysql保持一致 下面是新建文件夹lib&#xff0c;把jar包放进去&#xff0c;并添加为库 sql固定的情况下运行 import com.mysql.cj.jdbc.MysqlDataSo…

MySQL进阶-关联查询优化

采用左外连接 下面开始 EXPLAIN 分析 EXPLAIN SELECT SQL_NO_CACHE * FROM type LEFT JOIN book ON type.card book.card; 结论&#xff1a;type 有All ,代表着全表扫描&#xff0c;效率较差 添加索引优化 ALTER TABLE book ADD INDEX Y ( card); #【被驱动表】&#xff0…

fiddler+雷电模拟器(安卓9)+https配置

一、fiddler配置 1、开启https代理 2、根证书安装&#xff1a;导出证书系统安装 二、模拟器设置 1、设置网络桥接模式 【点击安装】提示安装成功后保存即可 2、开启root&#xff08;开启adb远程调试&#xff09; 3、开启磁盘写入 4、设置WLAN代理 5、证书安装&#xff1a;物…

STM32-SPI通信协议

目录 一&#xff1a;什么是通信协议&#xff1f; 二&#xff1a;电路结构 1.硬件电路 2&#xff1a;移位 3&#xff1a;时序图 4.交换字节 三&#xff1a;W25Q64简介 硬件电路&#xff1a;​编辑 存储器地址划分 Dlash操作注意事项 状态寄存器 SPI指令集 四&am…