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

ProPlot 基本语法及特点

文章目录

  • 简介
  • 多子图绘制处理
    • 共享轴标签
    • “跨度”轴标签
    • 多子图序号的绘制
  • 更简单的颜色条和图例
  • 更加美观的颜色和字体

简介

科研论文配图多图层元素(字体、坐标轴、图例等)的绘制条件提出了更高要求,我们需要更改 Matplotlib 和 Seaborn 中的多个绘制参数,特别是在绘制含有多个子图的复杂图形时,容易造成绘制代码冗长。

作为一个简洁的 Matplotlib 包装器,ProPlot 库是 Matplotlib 面向对象绘图方法(object-oriented interface)的高级封装,整合了 cartopy/Basemap 地图库xarraypandas,可弥补 Matplotlib 的部分缺陷。ProPlot 可以让 Matplotlib 爱好者拥有更加顺滑的绘图体验。

多子图绘制处理

共享轴标签

在使用 Matplotlib 绘制多子图时,不可避免地要进行轴刻度标签、轴标签、颜色条(colorbar)和图例的重复绘制操作,导致绘图代码冗长。此外,我们还需要为每个子图添加顺序标签(如 a、b、c 等)。ProPlot 可以直接通过其内置方法来绘制不同样式的子图标签,而 Matplotlib 则需要通过自定义函数进行绘制。

ProPlot 中的 figure () 函数的 sharexshareyshare 参数可用于控制不同的轴标签样式,它们的可选值及说明如下:

下面是使用 ProPlot 绘制的多子图轴标签共享示意图,其中

  • (a)为无共享轴标签样式;
  • (b)为设置 Y 轴共享标签样式;
  • (c)展示了设置 Y 轴共享方式为 Limits 时的样式,可以看出,每个子图的刻度范围被强制设置为相同,导致有些子图显示不全;
  • (d)展示了设置 Y 轴共享方式为 True 时的样式,此时,轴标签、刻度标签都实现了共享。
import pandas as pd
import numpy as np
import proplot as pplt
import matplotlib.pyplot as pltN = 50
M = 40
state = np.random.RandomState(51423)
cycle = pplt.Cycle('grays', M, left=0.1, right=0.8)datas = []
for scale in (1, 3, 7, 0.2):data = scale * (state.rand(N, M) - 0.5).cumsum(axis=0)[N // 2:, :]datas.append(data)# Plots with different sharing and spanning settings
# Note that span=True and share=True are the defaults
spans = (False, False, False, False)
shares = (False, 'labels', 'limits', True)
for i, (span, share) in enumerate(zip(spans, shares)):# note: there is shareyfig = pplt.figure(refaspect=1, refwidth=1.06, spanx=span, sharey=share)axs = fig.subplots(ncols=3)for ax, data in zip(axs, datas):on = ('off', 'on')[int(span)]ax.plot(data, cycle=cycle)ax.format(grid=False, xlabel='X labels', ylabel='shared axis',#suptitle=f'Sharing mode {share!r} (level {i}) with spanning labels {on}')fig.save(r'\第2章 绘制工具及其重要特征\Proplot_subplot_share'+str(share)+'.png', bbox_inches='tight',dpi=600)fig.save(r'\第2章 绘制工具及其重要特征\\Proplot_subplot_share'+str(share)+'.pdf', bbox_inches='tight')plt.show()

“跨度”轴标签

figure() 函数中的 spanxspanyspan 参数用于控制是否对 X 轴、Y 轴或两个轴使用“跨度”轴标签,即当多个子图的 X 轴、Y 轴标签相同时,使用一个轴标签替代即可。

import pandas as pd
import numpy as np
import proplot as pplt
import matplotlib.pyplot as pltstate = np.random.RandomState(51423)# Plots with minimum and maximum sharing settings
# Note that all x and y axis limits and ticks are identical
spans = (True, True)
shares = (True, 'all')
titles = ('Minimum sharing', 'Maximum sharing')
for span, share, title in zip(spans, shares, titles):fig = pplt.figure(refwidth=1, span=span, share=share)axs = fig.subplots(nrows=2, ncols=4)for ax in axs:data = (state.rand(100, 20) - 0.4).cumsum(axis=0)ax.plot(data, cycle='grays')axs.format(xlabel='xlabel', ylabel='ylabel',grid=False, xticks=25, yticks=5,labelsize=13)
fig.save(r'\第2章 绘制工具及其重要特征\图2-3-2 Proplot_subplot_span.png', bbox_inches='tight',dpi=600)
fig.save(r'\第2章 绘制工具及其重要特征\图2-3-2 Proplot_subplot_span.pdf', bbox_inches='tight')plt.show()

多子图序号的绘制

在科研论文配图中存在多个子图的情况下,一项工作是对每个子图进行序号标注。ProPlot 库为绘图对象(figure.Figure 和 axes.Axes)提供了灵活的 format () 方法,该方法可用于绘制不同的子图序号样式和位置。

format() 函数中的位置参数(abcloc)的可选值如下:


其中,子图序号 G ~ I 添加了背景边框,这是通过将 format () 函数的参数 abcbbox 设置为 True 实现的。此外,参数 abcborderabc_kwabctitlepad 分别用于控制子图序号的文本边框、文本属性(颜色、粗细等)、子图序号与子图标题间距属性。

import pandas as pd
import numpy as np
import proplot as pplt
import matplotlib.pyplot as pltfig = pplt.figure(figsize=(8,5.5),space=1, refwidth='10em')
axs = fig.subplots(nrows=3, ncols=3)
locs = ("c","l","r","lc","uc","ur","ul","ll","lr")
abcs = ("a","a.","(a)","[a]","(a","A","A.","(A)","(A.)")
axs.format(abcsize=16,xlabel='x axis', ylabel='y axis',labelsize=18) 
axs[-3:].format(abcbbox=True) 
axs[0, 0].format(abc="a", abcloc="c",abcborder=True)  
axs[0, 1].format(abc="a.", abcloc="l")  
axs[0, 2].format(abc="(a)", abcloc="r")  
axs[1, 0].format(abc="[a]", abcloc="lc",facecolor='gray5')  
axs[1, 1].format(abc="(a", abcloc="uc",facecolor='gray5')  
axs[1, 2].format(abc="A", abcloc="ur",facecolor='gray5')  
axs[2, 0].format(abc="A.", abcloc="ul",)  
axs[2, 1].format(abc="(A)", abcloc="ll")  
axs[2, 2].format(abc="(A.)", abcloc="lr") 
fig.save(r'\第2章 绘制工具及其重要特征\\图2-3-3 Proplot_abc.png', bbox_inches='tight',dpi=600)
fig.save(r'\第2章 绘制工具及其重要特征\\图2-3-3 Proplot_abc.pdf', bbox_inches='tight')
plt.show()

更多关于子图属性的添加和修改示例见 ProPlot 官方教程。

更简单的颜色条和图例

在使用 Matplotlib 的过程中,在子图外部绘制图例有时比较麻烦。通常,我们需要手动定位图例并调整图形和图例之间的间距,为图例在绘图对象中腾出绘制空间。此外,在子图外部绘制颜色条(colorbar)时,如 fig.colorbar (..., ax=ax),需要从父图中借用部分空间,这可能导致具有多个子图的图形对象的显示出现不对称问题。而在 Matplotlib 中,绘制插入绘图对象内部的颜色条和生成宽度一致的子图外部颜色条通常也很困难,因为插入的颜色条会过宽或过窄,与整个子图存在比例不协调等问题。

colorbar 即主图旁一个长条状的小图,能够辅助表示主图中colormap 的颜色组成和颜色与数值的对应关系

ProPlot 库中有一个专门用于绘制单个子图或多个连续子图的颜色条和图例的简单框架,该框架将位置参数传递给 ProPlot 的 axes.Axes.colorbaraxes.Axes.legend,完成特定子图不同位置颜色条或图例的绘制。

import pandas as pd
import numpy as np
import proplot as pplt
import matplotlib.pyplot as pltfig = pplt.figure(share=False, refwidth=2.3)# Colorbars
ax = fig.subplot(121)
state = np.random.RandomState(51423)
m = ax.heatmap(state.rand(10, 10), colorbar='t', cmap='grays')
ax.colorbar(m, loc='r')
ax.colorbar(m, loc='ll', label='colorbar label')
ax.format(title='Axes colorbars')# Legends
ax = fig.subplot(122)
ax.format(title='Axes legends', titlepad='0em')
hs = ax.plot((state.rand(10, 5) - 0.5).cumsum(axis=0), linewidth=3,cycle='ggplot', legend='t',labels=list('abcde'), legend_kw={'ncols': 5, 'frame': False}
)
ax.legend(hs, loc='r', ncols=1, frame=False)
ax.legend(hs, loc='ll', label='legend label')
fig.format(abc="(a)", abcloc="ul",abcsize=15, xlabel='xlabel', ylabel='ylabel')fig.save('\第2章 绘制工具及其重要特征\图2-3-4 Proplot_axes_cb_legend.png', bbox_inches='tight',dpi=600)
fig.save('\第2章 绘制工具及其重要特征\图2-3-4 Proplot_axes_cb_legend.pdf', bbox_inches='tight')
plt.show()

想要沿图形边缘绘制颜色条或图例,使用 proplot.figure.Figure.colorbarproplot.figure.Figure.legend 即可。

import pandas as pd
import numpy as np
import proplot as pplt
import matplotlib.pyplot as pltstate = np.random.RandomState(51423)
fig, axs = pplt.subplots(ncols=2, nrows=2, order='F', refwidth=1.7, wspace=2.5, share=False
)# Plot data
data = (state.rand(50, 50) - 0.1).cumsum(axis=0)
for ax in axs[:2]:m = ax.contourf(data, cmap='grays', extend='both')
hs = []
colors = pplt.get_colors('grays', 5)
for abc, color in zip('ABCDEF', colors):data = state.rand(10)for ax in axs[2:]:h, = ax.plot(data, color=color, lw=3, label=f'line {abc}')hs.append(h)# Add colorbars and legends
fig.colorbar(m, length=0.8, label='colorbar label', loc='b', col=1, locator=5)
fig.colorbar(m, label='colorbar label', loc='l')
fig.legend(hs, ncols=2, center=True, frame=False, loc='b', col=2)
fig.legend(hs, ncols=1, label='legend label', frame=False, loc='r')
fig.format(abc='A', abcloc='ul')
for ax, title in zip(axs, ('2D {} #1', '2D {} #2', 'Line {} #1', 'Line {} #2')):ax.format(xlabel='xlabel', title=title.format('dataset'))fig.save(r'\第2章 绘制工具及其重要特征\Proplot_figure_cb_legend.png', bbox_inches='tight',dpi=600)
fig.save(r'\第2章 绘制工具及其重要特征\Proplot_figure_cb_legend.pdf', bbox_inches='tight')
plt.show()

更加美观的颜色和字体

科学可视化展示中的一个常见问题是使用像“jet”这样的存在误导的颜色映射(colormap)去映射对应数值,这种颜色映射在色相、饱和度和亮度上都存在明显的视觉缺陷。Matplotlib 中可供选择的颜色映射选项较少,仅存在几个色相相似的颜色映射,无法应对较复杂的数值映射场景。

ProPlot 库封装了大量的颜色映射选项,不但提供了来自 Seaborn、cmOcean、SciVisColor 等的拓展包和 Scientific colour maps 等项目中的多个颜色映射选项,而且定义了一些默认颜色选项和一个用于生成新颜色条的 PerceptualColormap 类。

Matplotlib 的默认绘图字体为 DejaVu Sans,这种字体是开源的,但是,从美学角度来说,它并不太讨人喜欢。ProPlot 库还附带了其他几种无衬线字体和整个 TeX Gyre 字体系列,这些字体更加符合一些科技期刊对科研论文配图的绘制要求。

下面为使用 ProPlot 的不同颜色映射选项绘制的不同颜色映射的效果图。
(a)为灰色(grays)系颜色映射
(b)为 Matplotlib 默认的 viridis 颜色映射
(c)为 Seaborn 中的 mako 颜色映射
(d)为 ProPlot 中的 marine 颜色映射
(e)为 cmOcean 中的 dense 颜色映射
(f)为 Scientific colour maps 中的 batlow 颜色映射。

import pandas as pd
import numpy as np
import proplot as pplt
import matplotlib.pyplot as pltfig = pplt.figure(share=False, refwidth=2.3)# Colorbars
ax = fig.subplot(231)
state = np.random.RandomState(51423)
data = 1 + (state.rand(12, 10) - 0.45).cumsum(axis=0)
m = ax.heatmap(state.rand(10, 10), cmap='grays')
ax.colorbar(m, loc='ll', label='grays colorbar')
ax = fig.subplot(232)
m = ax.heatmap(state.rand(10, 10), cmap='viridis')
ax.colorbar(m, loc='ll', label='viridis colorbar')ax = fig.subplot(233)
m = ax.heatmap(state.rand(10, 10), cmap='mako')
ax.colorbar(m, loc='ll', label='mako colorbar')ax = fig.subplot(234)
m = ax.heatmap(state.rand(10, 10), cmap='marine')
ax.colorbar(m, loc='ll', label='marine colorbar')ax = fig.subplot(235)
m = ax.heatmap(state.rand(10, 10), cmap='dense')
ax.colorbar(m, loc='ll', label='dense colorbar')ax = fig.subplot(236)
m = ax.heatmap(state.rand(10, 10), cmap='batlow')
ax.colorbar(m, loc='ll', label='batlow colorbar')fig.format(abc="(a)", abcloc="ul",abcsize=15,xlabel='xlabel', ylabel='ylabel',labelsize=15)fig.save(r'\第2章 绘制工具及其重要特征\图2-3-6 Proplot_colormaps.png', bbox_inches='tight',dpi=600)
fig.save(r'\第2章 绘制工具及其重要特征\图2-3-6 Proplot_colormaps.pdf', bbox_inches='tight')
plt.show()

更多颜色映射的绘制请参考 ProPlot 官方教程。

下面是 ProPlot 中部分字体绘制的可视化结果,其中(a)(b)(c)中展示的 3 种字体是科研论文配图绘制中的常用字体。

import pandas as pd
import numpy as np
import proplot as pplt
import matplotlib.pyplot as plt
from proplot import rc# Sample data
state = np.random.RandomState(51423)
data = state.rand(6, 6)
data = pd.DataFrame(data, index=pd.Index(['a', 'b', 'c', 'd', 'e', 'f']))fig = pplt.figure(share=False, refwidth=2.3)
# 参数 rc 则用于覆盖预设样式字典中的值的参数映射,只更新样式中的一部分参数。
rc["font.family"] = "Times New Roman"
ax = fig.subplot(231)
m = ax.heatmap(data, cmap='grays',labels=True, precision=2, labels_kw={'weight': 'bold'}
)
ax.format(title='Times New Roman Font')rc["font.family"] = "TeX Gyre Schola"
ax = fig.subplot(232)
m = ax.heatmap(data, cmap='grays',labels=True, precision=2, labels_kw={'weight': 'bold'}
)
ax.format(title='TeX Gyre Schola Font')rc["font.family"] = "TeX Gyre Heros"
ax = fig.subplot(233)
m = ax.heatmap(data, cmap='grays',labels=True, precision=2, labels_kw={'weight': 'bold'}
)
ax.format(title='TeX Gyre Heros Font')rc["font.family"] = "TeX Gyre Cursor"
ax = fig.subplot(234)
m = ax.heatmap(data, cmap='grays',labels=True, precision=2, labels_kw={'weight': 'bold'}
)
ax.format(title='TeX Gyre Cursor Font')rc["font.family"] = "TeX Gyre Chorus"
ax = fig.subplot(235)
m = ax.heatmap(data, cmap='grays',labels=True, precision=2, labels_kw={'weight': 'bold'}
)
ax.format(title='TeX Gyre Chorus Font')rc["font.family"] = "TeX Gyre Adventor"
ax = fig.subplot(236)
m = ax.heatmap(data, cmap='grays',labels=True, precision=2, labels_kw={'weight': 'bold'}
)
ax.format(title='TeX Gyre Adventor Font')fig.format(abc="(a)", abcloc="ul",abcsize=15,xlabel='xlabel', ylabel='ylabel',labelsize=14)fig.save(r'\第2章 绘制工具及其重要特征\图2-3-7 Proplot_fonts.png', bbox_inches='tight',dpi=600)
fig.save(r'\第2章 绘制工具及其重要特征\图2-3-7 Proplot_fonts.pdf', bbox_inches='tight')
plt.show()

ProPlot 绘图工具库为基于 Python 基础绘图工具 Matplotlib 的第三方优质拓展库,既可使用它自身的绘图函数绘制不同类型的图,也可仅使用其优质的绘图主题,即导入 ProPlot 库。

以上代码基于 ProPlot 0.9.5 版本,不包括 Matplotlib 3.4.3 的后续版本的升级优化部分。ProPlot 0.9.5 版本不支持 Matplotlib 3.5 系列版本。想要使用 ProPlot 绘制不同需求的图形结果或使用 ProPlot 优质学术风格绘图主题,可自行安装 Matplotlib 3.4 系列版本。

参考书籍:宁海涛.科研论文配图绘制指南——基于Python[M].北京:人民邮电出版社,2023:31-36.

相关文章:

ProPlot 基本语法及特点

文章目录 简介多子图绘制处理共享轴标签“跨度”轴标签多子图序号的绘制 更简单的颜色条和图例更加美观的颜色和字体 简介 科研论文配图多图层元素(字体、坐标轴、图例等)的绘制条件提出了更高要求,我们需要更改 Matplotlib 和 Seaborn 中的…...

element-template-admin get请求正常 post请求超市问题

最近搞全栈,想写个增删改查连接element-template-admin框架,postman测get和post请求都正常,到框架里直接超时,看网络请求一直是padding状态,后来经查阅资料,发现是这个template框架的问题 解决方案&#x…...

Promise.all和promise.race的应用场景举例

Promise.all( ).then( )适用于处理多个异步任务&#xff0c;且所有的异步任务都得到结果时的情况。 <template><div class"box"><el-button type"primary" plain click"clickFn">点开弹出框</el-button></div> &…...

go学习-指针 标识符

指针&#xff0c;以及标识符 1.指针 &#xff08;1&#xff09;.基本介绍 1&#xff09;基本数据类型&#xff0c;变量存的值&#xff0c;也叫值类型 2&#xff09;获取变量的地址用&&#xff0c;比如 var num int ,获取num的地址&#xff1a;&num 3)指针类型&…...

LeetCode--HOT100题(42)

目录 题目描述&#xff1a;108. 将有序数组转换为二叉搜索树&#xff08;简单&#xff09;题目接口解题思路代码 PS: 题目描述&#xff1a;108. 将有序数组转换为二叉搜索树&#xff08;简单&#xff09; 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xf…...

leetcode-49.字母异位词分组-day20

...

YOLOv8教程系列:三、K折交叉验证——让你的每一份标注数据都物尽其用(yolov8目标检测+k折交叉验证法)

YOLOv8教程系列&#xff1a;三、K折交叉验证——让你的每一份标注数据都物尽其用&#xff08;yolov8目标检测k折交叉验证法&#xff09; 0.引言 k折交叉验证&#xff08;K-Fold Cross-Validation&#xff09;是一种在机器学习中常用的模型评估技术&#xff0c;用于估计模型的性…...

leetcode算法题--表示数值的字符串

原题链接&#xff1a;https://leetcode.cn/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/description/?envTypestudy-plan-v2&envIdcoding-interviews 题目类型有点新颖&#xff0c;有限状态机 // CharType表示当前字符的类型 // State表示当前所处的状态 type State…...

Docker安装及Docker构建简易版Hadoop生态

一、首先在VM创建一个新的虚拟机将Docker安装好 更新系统&#xff1a;首先打开终端&#xff0c;更新系统包列表。 sudo apt-get update sudo apt-get upgrade下图是更新系统包截图 安装Docker&#xff1a;使用以下命令在Linux上安装Docker。 sudo apt-get install -y docker.i…...

使用Burp Suite进行Web应用渗透测试

使用Burp Suite进行Web应用渗透测试是一种常见的方法&#xff0c;可以帮助发现Web应用程序中的安全漏洞和弱点。 步骤&#xff1a; 准备工作&#xff1a; 首先&#xff0c;确保已经安装了Burp Suite&#xff0c;并配置浏览器以使用Burp Suite作为代理。 配置代理&#xff1a;…...

Github的使用指南

首次创建仓库 1.官网创建仓库 打开giuhub官网&#xff0c;右上角点击你的头像&#xff0c;随后点击your repositories 点击New开始创建仓库 如下图为创建仓库的选项解释 出现如下界面就可以进行后续的git指令操作了 2.git上传项目 进入需上传项目的所在目录&#xff0c;打开…...

mongodb 添加加点 stateStr 停在 STARTUP

解决办法 PRIMARY 节点是的host 是否是内网IP&#xff0c;如果是内网IP 需要切换成外网IP 即可&#xff1b;...

c语言中编译过程与预处理

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、c语言的编译与链接1、编译与链接概述2、编译与链接详解 二、c语言预处理1.c语言中内置的预定义符号2、#define定义标识符3、#define定义宏4、#define 替换规…...

TP-LINK 路由器设置内网穿透

TP-LINK 路由器设置内网穿透 开发中经常遇到调用第三方软件回调调试的情况&#xff0c;例如微信开发&#xff0c;支付回调等测试&#xff0c;用内网穿透是一种简单的方式也是偷懒的方式。 以TP-LINK路由器为例实现内网穿透 登录路由器 2.找到路由器虚拟服务器&#xff0c;添加…...

A 题国际旅游网络的大数据分析-详细解析与代码答案(2023 年全国高校数据统计与调查分析挑战赛

请你们进行数据统计与调查分析&#xff0c;使用附件中的数据&#xff0c;回答下列问题&#xff1a; ⚫ 问题 1: 请进行分类汇总统计&#xff0c;计算不同国家 1995 年至 2020 年累计旅游总人数&#xff0c;从哪个国家旅游出发的人数最多&#xff0c;哪个国家旅游到达的人数最多…...

《深入理解Java虚拟机》读书笔记: 类加载器

类加载器 虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现&#xff0c;以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。 类加载器可以说是Java语言的一项创新&…...

宝塔计划任务读取文件失败

想挂计划任务 相关文章【已解决】计划任务读取文件失败 - Linux面板 - 宝塔面板论坛 对方反馈的是执行下面的命令 chattr -ai /var/spool/cron 后来发现直接没有这个文件夹&#xff0c;然后通过mkdir命令创建文件夹&#xff0c;成功在宝塔创建了计划任务 后面发现任务虽然添…...

Python操作sql,备份数据库

1、批量执行sql import pymysql# 执行批量的 SQL 语句 def executeBatchSql(cursor, sqlStatements):for sql in sqlStatements:try:cursor.execute(sql)print(Executed SQL statement:, sql)except Exception as e:print(Error executing SQL statement:, e)# 创建数据库连接…...

Linux线程 --- 生产者消费者模型(C语言)

在学习完线程相关的概念之后&#xff0c;本节来认识一下Linux多线程相关的一个重要模型----“ 生产者消费者模型” 本文参考&#xff1a; Linux多线程生产者与消费者_红娃子的博客-CSDN博客 Linux多线程——生产者消费者模型_linux多线程生产者与消费者_两片空白的博客-CSDN博客…...

Vue2向Vue3过度核心技术computed计算属性

目录 1 computed计算属性1.1 概念1.2 语法1.3 注意1.4.案例1.5.代码准备 2 computed计算属性 VS methods方法2.1 computed计算属性2.2 methods计算属性2.3 计算属性的优势2.4 总结 3 计算属性的完整写法 1 computed计算属性 1.1 概念 基于现有的数据&#xff0c;计算出来的新属…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...