当前位置: 首页 > 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;计算出来的新属…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...