Python库学习(十):Matplotlib绘画库
1. 介绍
Matplotlib
是一个用于绘制图表和可视化数据的 Python
库。它提供了丰富的绘图工具,可以用于生成各种静态、交互式和动画图表。Matplotlib
是数据科学、机器学习和科学计算领域中最流行的绘图库之一。
1.1 关键特性
以下是 Matplotlib
的一些关键特性:
-
简单易用:
Matplotlib
提供了简单而直观的API
,使得用户能够轻松创建各种类型的图表。 -
多种绘图类型: 支持绘制各种类型的图表,包括线图、散点图、柱状图、饼图、等高线图、3D 图表等。
-
自定义性强: 用户可以轻松地自定义图表的外观和样式,包括颜色、线型、标签、标题等。
-
支持 LaTex: 支持使用
LaTeX
渲染文本,使得图表标签和注释可以具有高质量的数学表达式。 -
交互式图表:
Matplotlib
可以嵌入到交互式环境中,如Jupyter Notebook
,支持交互式数据探索和动态更新。 -
支持多种输出格式: 可以将图表保存为多种格式,如
PNG、PDF、SVG、EPS
等。 -
对象导向:
Matplotlib
的图表是通过对象导向的方式创建的,这意味着用户可以直接操作图表的元素,使得定制化和复杂的图表更加容易。 -
内置样式和颜色映射: 提供了内置的样式表和颜色映射,使得用户可以轻松地应用一致的风格和颜色。
-
复杂图表和子图: 支持创建复杂的图表布局和多子图,适用于需要展示多个数据视图的场景。
-
跨平台: 可以在多个操作系统上运行,包括
Windows、Linux 和 macOS
。
1.2 其他介绍
Github(截止当前 18.2K):https://github.com/matplotlib/matplotlib
-
官方文档: https://matplotlib.org/stable/users/explain/quick_start.html -
中文文档: https://matplotlib.net/stable/users/getting_started/index.html
2. 安装&升级
2.1 安装
# pip方式安装
$ pip install matplotlib
# conda方式安装
$ conda install matplotlib
2.2 升级
# pip方式升级
$ pip install --upgrade matplotlib
# conda方式升级
$ conda update matplotlib
3. 绘图风格
3.1 对象风格
使用面向对象的风格画图,首先要创建画布(大容器),然后在画布中填充子图信息(小容器)
import matplotlib.pyplot as plt
import numpy as np
if __name__ == '__main__':
# 设置字体以便正确显示中文
plt.rcParams['font.sans-serif'] = ['FangSong']
# 正确显示连字符
plt.rcParams['axes.unicode_minus'] = False
# --------------- 创建画布 ---------------
fig = plt.figure()
# 设置画布大小
fig.set_size_inches(7, 5)
# 设置画布颜色
fig.set_facecolor('ivory')
# --------------- 创建子图 ---------------
# 设置子图位置
subImg = fig.add_axes([0.1, 0.1, 0.8, 0.8])
# 设置x、y轴数据
x = np.linspace(0, 10, 20)
y1 = np.power(x, 2)
y2 = x * 10
# 画线
subImg.plot(x, y1, 'r', ls='-', linewidth=2, label='$x^2$')
subImg.plot(x, y2, 'b', ls='--', linewidth=2, label='$x*10$')
# 添加文本标志
subImg.text(3.4, 7.5, r'$x^2$', fontsize=12)
subImg.text(1, 7.5, r'$x*10$', fontsize=12)
# 设置子图标题
subImg.set_title("子图A标题", fontdict={'size': 16})
subImg.legend(loc='upper left') # 生成图例
# # 设置x、y轴标志
subImg.set_xlabel('X轴', fontdict={'size': 14})
subImg.set_ylabel('Y轴', fontdict={'size': 14})
# 显示图片
plt.show()

3.2 API风格
除此上文风格,Matplotlib
还提供一种类MATLAB
风格的API
,这种使用方式没有画布和子图的概念,直接调用函数即可绘图和显示。
实现上面的图片效果代码如下:
import matplotlib.pyplot as plt
import numpy as np
if __name__ == '__main__':
# 设置字体以便正确显示中文
plt.rcParams['font.sans-serif'] = ['FangSong']
# 正确显示连字符
plt.rcParams['axes.unicode_minus'] = False
# 设置x、y轴数据
x = np.linspace(0, 10, 20)
y1 = np.power(x, 2)
y2 = x * 10
# 画线
plt.plot(x, y1, 'r', ls='-', linewidth=2, label='$x^2$')
plt.plot(x, y2, 'b', ls='--', linewidth=2, label='$x*10$')
# 添加文本标注
plt.text(3.4, 7.5, r'$x^2$', fontsize=12)
plt.text(1, 7.5, r'$x*10$', fontsize=12)
# 设置子图标题
plt.title("示例标题", fontdict={'size': 16})
# 生成图例
plt.legend(loc='upper left')
# 设置x、y轴标志
plt.xlabel('X轴')
plt.ylabel('Y轴')
# 显示图片
plt.show()
4. 快速绘图
4.1 折线图
-
plt.plot()
: 主要用于绘制折线图的主要函数之一。
import matplotlib.pyplot as plt
import numpy as np
if __name__ == '__main__':
# 设置字体以便正确显示中文
plt.rcParams['font.sans-serif'] = ['FangSong']
# 正确显示连字符
plt.rcParams['axes.unicode_minus'] = False
# 设置x、y轴数据
x = np.linspace(0, 10, 20)
y1 = np.power(x, 2)
y2 = x * 10
# 图一位置,subplot(1, 2, 1) 代表画布是1行2列,当前图位于第1列
plt.subplot(1, 2, 1)
plt.title("图一")
plt.plot(x, y1)
# 图一位置,subplot(1, 2, 2) 代表画布是1行2列,当前图位于第2列
plt.subplot(1, 2, 2)
plt.title("图二")
plt.plot(x, y2)
# 显示图片
plt.show()

4.2 曲线图
严格来说,plot( )
函数绘制的是折线图而非曲线图,因为该函数只是将顺序相邻的点以直线连接,如想画曲线图,推荐使用semilogx( )、semilogy( )和loglog( )
等函数。
import matplotlib.pyplot as plt
import numpy as np
# 设置字体以便正确显示中文
plt.rcParams['font.sans-serif'] = ['FangSong']
# 正确显示连字符
plt.rcParams['axes.unicode_minus'] = False
if __name__ == '__main__':
# 生成示例数据
x = np.linspace(1, 10, 100)
y = np.exp(x)
# 创建画布和子图,1行3列
fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(15, 5))
# 使用semilogx()在第一个子图中绘制对数x轴的折线图
ax1.semilogx(x, y, label='对数x轴折线图')
ax1.set_title('semilogx() 示例')
ax1.set_xlabel('对数X轴')
ax1.set_ylabel('Y轴')
ax1.legend()
# 使用semilogy()在第二个子图中绘制对数y轴的折线图
ax2.semilogy(x, y, label='对数y轴折线图')
ax2.set_title('semilogy() 示例')
ax2.set_xlabel('X轴')
ax2.set_ylabel('对数Y轴')
ax2.legend()
# 使用loglog()在第三个子图中绘制对数坐标轴的折线图
ax3.loglog(x, y, label='对数坐标轴折线图')
ax3.set_title('loglog() 示例')
ax3.set_xlabel('对数X轴')
ax3.set_ylabel('对数Y轴')
ax3.legend()
# 调整子图之间的距离
plt.tight_layout()
# 显示图表
plt.show()

4.3 柱状图
-
plot.bar()
: 用来绘制垂直柱状图 -
plot.barh()
: 用来绘制水平柱状图
import matplotlib.pyplot as plt
# 设置字体以便正确显示中文
plt.rcParams['font.sans-serif'] = ['FangSong']
# 正确显示连字符
plt.rcParams['axes.unicode_minus'] = False
if __name__ == '__main__':
# 生成示例数据
names = ['孙悟空', '猪八戒', '唐僧', '沙僧']
values = [36, 24, 75, 45]
plt.title("年龄分布图")
# 创建画布和子图
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
# 使用plot.bar()在第一个子图中绘制垂直条形图
ax1.bar(names, values, color='blue')
ax1.set_title('垂直条形图示例')
ax1.set_xlabel('姓名')
ax1.set_ylabel('年龄')
# 使用plot.barh()在第二个子图中绘制水平条形图
ax2.barh(names, values, color='green')
ax2.set_title('水平条形图示例')
ax2.set_xlabel('年龄')
ax2.set_ylabel('姓名')
# 调整子图之间的距离
plt.tight_layout()
# 显示图表
plt.show()

4.4 散点图
scatter()
函数用于绘制散点图,散点图是一种展示两个变量之间关系的常见图表类型。每个点的位置由两个变量的值决定,横轴表示一个变量,纵轴表示另一个变量。
1. 参数说明
scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None, *, plotnonfinite=False, data=None, **kwargs)
-
x, y: 必需,表示散点图上点的横坐标和纵坐标。 -
s: 用于指定散点的大小。可以是一个标量,表示所有点的大小相同;也可以是一个数组,表示每个点的大小。 -
c: 用于指定散点的颜色。可以是一个标量,表示所有点的颜色相同;也可以是一个数组,表示每个点的颜色。此外,你还可以通过设置 c
参数为字符串值来表示使用预定义的颜色映射。 -
marker: 用于指定散点的标记样式,例如 'o' 表示圆点,'^' 表示三角形等。 -
cmap: 用于指定颜色映射,仅当 c
参数为数组时起作用。更多颜色参考文档: https://matplotlib.org/stable/users/explain/colors/colormaps.html -
norm: 用于标准化颜色映射。 -
alpha: 用于指定散点的透明度,取值范围为 0(完全透明)到 1(完全不透明)。 -
linewidths: 用于指定散点边缘的线宽。 -
edgecolors: 用于指定散点边缘的颜色。
2. 代码示例
import matplotlib.pyplot as plt
import numpy as np
# 设置字体以便正确显示中文
plt.rcParams['font.sans-serif'] = ['FangSong']
# 正确显示连字符
plt.rcParams['axes.unicode_minus'] = False
if __name__ == '__main__':
# 生成示例数据
x = np.random.randn(50)
y = np.random.randn(50)
# 随机数,用于映射颜色
color = 10 * np.random.rand(50)
# 随机数表示点的面积
area = np.square(30 * np.random.rand(50))
plt.scatter(x, y, label="数据点", c=color, marker="o", s=area, cmap='flag', edgecolor='r')
# 添加标题和标签
plt.title("散点图示例")
plt.xlabel("X轴")
plt.ylabel("Y轴")
# 显示图例
plt.legend()
# 显示图表
plt.show()

4.5 饼图
1. 参数说明
pie(
x, explode=None, labels=None, colors=None, autopct=None,
pctdistance=0.6, shadow=False, labeldistance=1.1,
startangle=0, radius=1, counterclock=True, wedgeprops=None,
textprops=None, center=(0, 0), frame=False,
rotatelabels=False, *, normalize=True, hatch=None, data=None)
-
x: 必需,表示每个部分的大小,可以是一个数组或一个标量。如果是一个数组,表示每个扇形的大小;如果是一个标量,表示所有扇形的大小相同。 -
explode: 用于指定哪些扇形被拉出。如果某个值大于0,表示对应索引的扇形会被拉出一定的距离。 -
labels: 扇形上显示的标签,可以是一个数组或 None。 -
colors: 扇形的颜色,可以是一个颜色列表,表示每个扇形的颜色;也可以是 None,表示使用默认颜色。 -
autopct: 控制在饼图上显示每个部分的百分比,可以是字符串格式化,例如 '%1.1f%%'。 -
pctdistance: 百分比标签与圆心的距离,取值范围为 [0, 1]。 -
shadow: 是否在饼图下方添加阴影。 -
labeldistance: 标签与圆心的距离,取值范围为 [0, 1]。 -
startangle: 饼图起始角度,按逆时针方向计算,0 度表示从正 x 轴开始。 -
radius: 饼图的半径。 -
counterclock: 是否按逆时针方向绘制饼图。 -
wedgeprops: 扇形的属性字典,用于设置扇形的样式,例如边界颜色、边界宽度等。 -
textprops: 标签的属性字典,用于设置标签的样式,例如字体大小、颜色等。 -
center: 饼图的中心坐标。 -
frame: 是否绘制一个带有刻度标签的坐标轴框架。 -
rotatelabels: 是否旋转标签。 -
normalize: 如果为 True,则将 x 归一化为百分比。
2.代码示例
import matplotlib.pyplot as plt
# 设置字体以便正确显示中文
plt.rcParams["font.sans-serif"] = ["FangSong"]
# 正确显示连字符
plt.rcParams["axes.unicode_minus"] = False
if __name__ == '__main__':
# 示例数据
labels = ['Go', 'PHP', 'C', 'Java', 'Python']
sizes = [15, 5, 19.5, 20, 40.5]
# 哪个闪现
explode = (0, 0.1, 0, 0, 0)
# 使用pie()绘制饼状图
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90, explode=explode,
colors=['gold', 'lightskyblue', 'lightcoral', 'lightgreen', 'purple'])
# 添加标题
plt.title('后端编程语言占比')
# 显示图表
plt.show()

4.6 等值线图
import matplotlib.pyplot as plt
import numpy as np
# 设置字体以便正确显示中文
plt.rcParams["font.sans-serif"] = ["FangSong"]
# 正确显示连字符
plt.rcParams["axes.unicode_minus"] = False
if __name__ == '__main__':
# 创建示例数据
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X ** 2 + Y ** 2))
# 创建画布和子图
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
# ------------------------------ 图A-contour-填充示例 ----------------------------------
contour_plot = ax1.contour(X, Y, Z, levels=20, cmap='viridis')
fig.colorbar(contour_plot, label='Z值')
ax1.set_title('等值线图示例')
ax1.set_xlabel('X轴')
ax1.set_ylabel('Y轴')
# ------------------------------ 图B-contourf-填充示例 ----------------------------------
contour_plot = ax2.contourf(X, Y, Z, levels=20, cmap='viridis')
fig.colorbar(contour_plot, label='Z值')
ax2.set_title('等值线图(填充)')
ax2.set_xlabel('X轴')
ax2.set_ylabel('Y轴')
# 显示图表
plt.show()

4.7 矢量合成图
矢量合成图以箭头的形式绘制矢量,因此也被称为箭头图。矢量合成图以箭头的方向表示矢量的方向。
import matplotlib.pyplot as plt
import numpy as np
# 设置字体以便正确显示中文
plt.rcParams["font.sans-serif"] = ["FangSong"]
# 正确显示连字符
plt.rcParams["axes.unicode_minus"] = False
if __name__ == '__main__':
# 创建两个矢量
vector1 = np.array([3, 2])
vector2 = np.array([-1, 4])
# 计算矢量合成结果
resultant_vector = vector1 + vector2
# 创建图表和子图
fig, ax = plt.subplots()
# 绘制矢量1
ax.arrow(0, 0, vector1[0], vector1[1], head_width=0.2, head_length=0.2, fc='blue', ec='blue', label='矢量1')
# 绘制矢量2
ax.arrow(0, 0, vector2[0], vector2[1], head_width=0.2, head_length=0.2, fc='red', ec='red', label='矢量2')
# 绘制矢量合成结果
ax.arrow(0, 0, resultant_vector[0], resultant_vector[1], head_width=0.2, head_length=0.2, fc='green', ec='green',
label='结果')
# 设置坐标轴
ax.set_xlim(-2, 5)
ax.set_ylim(-1, 8)
# 添加网格
ax.grid(True)
# 添加标签和标题
ax.set_xlabel('X轴')
ax.set_ylabel('Y轴')
ax.set_title('矢量图示例')
# 添加图例
ax.legend()
# 显示图表
plt.show()

本文由 mdnice 多平台发布
相关文章:

Python库学习(十):Matplotlib绘画库
1. 介绍 Matplotlib 是一个用于绘制图表和可视化数据的 Python 库。它提供了丰富的绘图工具,可以用于生成各种静态、交互式和动画图表。Matplotlib 是数据科学、机器学习和科学计算领域中最流行的绘图库之一。 1.1 关键特性 以下是 Matplotlib 的一些关键特性&…...
coverity工具 代码审计
第39篇:Coverity代码审计/代码扫描工具的使用教程_希潭实验室ABC123的博客-CSDN博客...

女鹅冬天的第一件羽绒服,当然要时尚经典的
90白鸭绒,高密度充绒量和蓬松度 让这件羽绒服更加饱满更有型 三防工艺,立领连帽设计 下摆抽绳,帽子上的魔术贴设计 无一不将保暖落实在实处 宽松版型立体感很强,对身材的包容性也是非常不错...

智慧渔业方案:AI渔政视频智能监管平台助力水域禁渔执法
一、方案背景 国内有很多水库及河流设立了禁渔期,加强渔政执法监管对保障国家渔业权益、维护渔业生产秩序、保护渔民群众生命财产安全、推进水域生态文明建设具有重要意义。目前,部分地区的监管手段信息化水平低下,存在人员少、职责多、任务…...

LXC、Docker、 Kubernetes 容器以及Hypervisor的区别
LXC、Docker、 Kubernetes 容器以及Hypervisor的区别 SaaS: Software-as-a-Service(软件即服务) PaaS: Platform-as-a-Service(平台即服务) IaaS: Infrastructure-as-a-Service(基础设施即服务) 1、Docke…...

电子杂志制作不求人:简单易用的工具推荐
如果你想要制作一份精美的电子杂志,但是又不想花费太多的时间和金钱,也不想求及朋友帮忙制作,那么可以试试这个网站制作电子杂志,展现出的效果跟专业级设计师的效果没什么区别哦 赶快收藏吧-------FLBOOK在线制作电子杂志平台&a…...

Excel冻结窗格
1、冻结表格首行 点击菜单栏中的“视图”,选择“窗口”选项卡中的“冻结窗格”下的小三角,再选择“冻结首行”; 2.冻结表格首列 点击菜单栏中的“视图”,选择“窗口”选项卡中的“冻结窗格”下的小三角,再选择“冻结…...
Flink自定义sink并支持insert overwrite 功能
前言 自定义flink sink,批模式下,有insert overwrite 需求或需要启动任务或任务完成后时,只执行一次某些操作时,则可参考此文章 组件: flink: 1.15 参考文档:https://nightlies.apache.org/flink/flink-docs-release-1.15/docs/dev/table/sourcessinks/ 分析 inser…...

CSS Vue/RN 背景使用opacity,文字在背景上显示
Vue <div class"training_project_tip"> <div class"tip">展示的文字</div> </div> .training_project_tip { font-size: 12px; font-weight: 400; text-align: left; color: #ffffff; margin-top: 8px; position: relative; dis…...

vue3自定义指令批量注册
第一步、在src目录下新建directives文件文件夹 用来存放不同的指令,以dbounce指令为例: 第二步、在directives目录下创建debounce.js文件,文件内容如下: // 防抖 const debounceClick {mounted(el, binding) {let timerel.addE…...

山西电力市场日前价格预测【2023-10-18】
日前价格预测 预测说明: 如上图所示,预测明日(2023-10-18)山西电力市场全天平均日前电价为348.72元/MWh。其中,最高日前电价为505.50元/MWh,预计出现在18: 00。最低日前电价为288.10元/MWh,预计…...

2-k8s-控制器介绍
文章目录 一、控制器类型二、Deployment控制器三、SatefulSet控制器四、Daemonset控制器五、Job控制器六、CronJob 控制器 一、控制器类型 Deployment:适合无状态的服务部署StatefullSet:适合有状态的服务部署DaemonSet:一次部署,…...

【数据结构】二叉树--OJ练习题
目录 1 单值二叉树 2 相同的树 3 另一颗树的子树 4 二叉树的前序遍历 5 二叉树的最大深度 6 对称二叉树 7 二叉树遍历 1 单值二叉树 965. 单值二叉树 - 力扣(LeetCode) bool isUnivalTree(struct TreeNode* root) {if (root NULL){return true;}…...

时间复杂度为 O(n^2) 的排序算法
大家好,我是 方圆。对于小规模数据,我们可以选用时间复杂度为 O(n2) 的排序算法,因为时间复杂度并不代表实际代码的执行时间,而且它也省去了低阶、系数和常数,仅代表的增长趋势,所以在小规模数据情况下&…...
ES6 Map数据结构
1.Map是什么? ES6 提供的另一种新的引用类型的数据结构 它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键) 以前引用类型中的对象也是键值对…...
网页数据采集HTTP Get,Post登录提交数据--VBS之Microsoft.XMLHTTP对象
MSXML中提供了Microsoft.XMLHTTP对象,能够完成从数据包到Request对象的转换以及发送任务。 创建XMLHTTP对象的语句如下: Set objXML CreateObject("Msxml2.XMLHTTP") 或 Set objXML CreateObject(“Microsoft.XMLHTTP”) Or, for version 3…...

强化科技创新“辐射力”,中国移动的数智化大棋局
作者 | 曾响铃 文 | 响铃说 丝滑流畅的5G连接、每时每刻的数字生活服务、无处不在的智能终端、拟人交流的AI助手、梦幻般的XR虚拟现实、直接感受的裸眼3D…… 不知不觉,那个科幻片中的世界,越来越近。 数智化新世界的“气氛”,由一个个具…...

喜报 | 擎创科技实力亮相2023科创会并荣获科技创新奖
近日,由国家互联网数据中心产业技术创新战略联盟(NIISA)主办的“2023第二届国际互联网产业科技创新大会暨互联网创新产品展览会”于北京圆满落幕。 擎创科技副总裁冯陈湧受邀出席本次论坛,并发表了“银行分布式核心智能运维体系思…...
vue3学习(九)--- keep-alive缓存组件
有时候我们不希望组件被重新渲染影响使用体验;或者处于性能考虑,避免多次重复渲染降低性能。而是希望组件可以缓存下来,维持当前的状态。这时候就需要用到keep-alive组件。 keep-alive有两个独有的生命周期:activated、 deactivated 接下来看…...

用servlet实现一个简单的猜数字游戏。
需要两个页面,一个jsp页面(guess.jsp)和servlet页面(servlet)。 一.jsp页面 在jsp页面中需要实现: 1.创建随机数并且保存在session中。 2.做个form表单提交猜的数字给servlet页面。 <%page import&…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
背包问题双雄:01 背包与完全背包详解(Java 实现)
一、背包问题概述 背包问题是动态规划领域的经典问题,其核心在于如何在有限容量的背包中选择物品,使得总价值最大化。根据物品选择规则的不同,主要分为两类: 01 背包:每件物品最多选 1 次(选或不选&#…...
用js实现常见排序算法
以下是几种常见排序算法的 JS实现,包括选择排序、冒泡排序、插入排序、快速排序和归并排序,以及每种算法的特点和复杂度分析 1. 选择排序(Selection Sort) 核心思想:每次从未排序部分选择最小元素,与未排…...

开疆智能Ethernet/IP转Modbus网关连接鸣志步进电机驱动器配置案例
在工业自动化控制系统中,常常会遇到不同品牌和通信协议的设备需要协同工作的情况。本案例中,客户现场采用了 罗克韦尔PLC,但需要控制的变频器仅支持 ModbusRTU 协议。为了实现PLC 对变频器的有效控制与监控,引入了开疆智能Etherne…...