MATLAB | 这些花里胡哨的热图怎么画
好早之前写过一个绘制相关系数矩阵的代码,但是会自动求相关系数,而且画出来的热图只能是方形,这里写一款允许nan值出现,任意形状的热图绘制代码,绘制效果如下:
如遇到bug请后台提出,并去gitee下载更新版本
教程部分
1 基础绘制
假设有个随机数矩阵,绘图:
Data=rand(15,15);
SHM=SHeatmap(Data,'Format','sq');
SHM=SHM.draw();
假设存在负数:
Data=rand(15,15)-.5;
SHM=SHeatmap(Data,'Format','sq');
SHM=SHM.draw();
假设存在nan:
Data=rand(12,12)-.5;
Data([4,5,13])=nan;
SHM=SHeatmap(Data,'Format','sq');
SHM=SHM.draw();
假设非方阵:
Data=rand(25,30);
SHM=SHeatmap(Data,'Format','sq');
SHM=SHM.draw();
颜色怎么换,在后面会讲到。
2 显示文字
使用setText
方法显示文字:
Data=rand(12,12)-.5;
Data([4,5,13])=nan;SHM=SHeatmap(Data,'Format','sq');
SHM=SHM.draw();SHM.setText();
如果要修饰或显示文字请在修改颜色后进行。
3 修改形状
形状有以下几个可选项:
- sq : 方形(默认)
- pie : 饼图
- circ : 圆形
- oval : 椭圆形
- hex : 六边形
- asq : 自带调整大小的方形
- acirc : 自带调整大小的圆形
figure()
Data=rand(12,12)-.5;
SHM=SHeatmap(Data,'Format','oval');
SHM=SHM.draw(); figure()
Data=rand(12,12)-.5;
SHM=SHeatmap(Data,'Format','pie');
SHM=SHM.draw();
展示一下全部类型:
sq
pie
circ
oval
hex
asq
acirc
4 颜色范围
新版本使用clim
老版本使用caxis
调整映射范围:
Data=rand(12,12)-.5;
Data([4,5,13])=nan;SHM=SHeatmap(Data,'Format','sq');
SHM=SHM.draw();clim([-.8,.8])
SHM.setText();
调整前:
调整后:
5 colormap
matlab自带的colormap都能用:
Data=rand(14,14);
SHM=SHeatmap(Data,'Format','sq');
SHM.draw();colormap(bone)
可以联合我写的slanCM工具函数:
https://slandarer.blog.csdn.net/article/details/127719784
举点例子:
colormap(flipud(slanCM(20)))
colormap(flipud(slanCM(21)))
colormap(slanCM(61))
colormap(slanCM(177))
再比如:
Data=rand(12,12)-.5;
Data([4,5,13])=nan;SHM=SHeatmap(Data,'Format','sq');
SHM=SHM.draw();clim([-.7,.7])
colormap(slanCM(141))
SHM.setText();
clim([-.7,.7])
colormap(slanCM(136))
clim([-.7,.7])
colormap(slanCM(134))
clim([-.8,.8])
colormap(slanCM(110))
clim([-1,1])
colormap(slanCM(97))
6 调整colormap位置
假设编写如下代码:
Data=rand(3,12);
SHM=SHeatmap(Data,'Format','sq');
SHM=SHM.draw();
改成这样:
Data=rand(3,12);
SHM=SHeatmap(Data,'Format','sq');
SHM=SHM.draw();CB=colorbar;
CB.Location='southoutside';
7 修改标签
改编x轴y轴标签就还是设置XTickLabel
和YTickLabel
:
Data=rand(10,10);
SHM=SHeatmap(Data,'Format','sq');
SHM=SHM.draw(); ax=gca;
ax.XTickLabel={'X-1','X-2','X-3','X-4','X-5','X-6','X-7','X-8','X-9','X-10'};
ax.YTickLabel={'Y-1','Y-2','Y-3','Y-4','Y-5','Y-6','Y-7','Y-8','Y-9','Y-10'};
ax.FontSize=14;
8 整体修饰
使用:
- setBox :修饰边框
- setPatch :修饰图形
- setText :修饰文本
可对各个部分进行整体修改。
修改图形边缘及框颜色:
Data=rand(10,10);
Data([4,5,13])=nan;SHM=SHeatmap(Data,'Format','pie');
SHM=SHM.draw(); SHM.setBox('Color',[0,0,.8])
SHM.setPatch('EdgeColor',[.8,0,0])
修改全部文本颜色:
Data=rand(10,10);
Data([4,5,13])=nan;SHM=SHeatmap(Data,'Format','sq');
SHM=SHM.draw(); SHM.setText('Color',[0,0,.8],'FontSize',14)
9 局部修改
使用:
- setTextMN
- setPatchMN
设置第m行n列对象的属性:
举个例子,把数值大于0.9部分文字变为星号,并用红色框框起来:
Data=rand(9,9);
Data([4,5,13])=nan;SHM=SHeatmap(Data,'Format','sq');
SHM=SHM.draw();SHM.setText(); for i=1:size(Data,1)for j=1:size(Data,2)if Data(i,j)>.9SHM.setTextMN(i,j,'String','**','FontSize',20)SHM.setPatchMN(i,j,'EdgeColor',[1,0,0],'LineWidth',2)endend
end
局部设置可设置nan部分颜色:
SHM.setPatchMN(4,1,'FaceColor',[.8,.6,.6])
工具函数完整代码
classdef SHeatmap
% =========================================================================
% Format
% -------------------------------------------------------------------------
% sq : 方形(默认)
% pie : 饼图
% circ : 圆形
% oval : 椭圆形
% hex : 六边形
% asq : 自带调整大小的方形
% acirc : 自带调整大小的圆形
% =========================================================================
% @author : slandarer
% gzh : slandarer随笔
% -------------------------------------------------------------------------
% Zhaoxu Liu / slandarer (2023). special heatmap
% (https://www.mathworks.com/matlabcentral/fileexchange/125520-special-heatmap),
% MATLAB Central File Exchange. 检索来源 2023/3/1.
% -------------------------------------------------------------------------propertiesax,arginList={'Format'}Format='sq' % sq : 方形(默认)% pie : 饼图% circ : 圆形% oval : 椭圆形% hex : 六边形% asq : 自带调整大小的方形% acirc : 自带调整大小的圆形DatadfColor1=[0.9686 0.9882 0.9412; 0.9454 0.9791 0.9199; 0.9221 0.9700 0.8987; 0.8988 0.9609 0.8774;0.8759 0.9519 0.8560; 0.8557 0.9438 0.8338; 0.8354 0.9357 0.8115; 0.8152 0.9276 0.7892;0.7909 0.9180 0.7685; 0.7545 0.9039 0.7523; 0.7180 0.8897 0.7361; 0.6816 0.8755 0.7199;0.6417 0.8602 0.7155; 0.5962 0.8430 0.7307; 0.5507 0.8258 0.7459; 0.5051 0.8086 0.7610;0.4596 0.7873 0.7762; 0.4140 0.7620 0.7914; 0.3685 0.7367 0.8066; 0.3230 0.7114 0.8218;0.2837 0.6773 0.8142; 0.2483 0.6378 0.7929; 0.2129 0.5984 0.7717; 0.1775 0.5589 0.7504;0.1421 0.5217 0.7314; 0.1066 0.4853 0.7132; 0.0712 0.4488 0.6950; 0.0358 0.4124 0.6768;0.0314 0.3724 0.6364; 0.0314 0.3319 0.5929; 0.0314 0.2915 0.5494; 0.0314 0.2510 0.5059]dfColor2=[0.6196 0.0039 0.2588; 0.6892 0.0811 0.2753; 0.7588 0.1583 0.2917; 0.8283 0.2354 0.3082;0.8706 0.2966 0.2961; 0.9098 0.3561 0.2810; 0.9490 0.4156 0.2658; 0.9660 0.4932 0.2931;0.9774 0.5755 0.3311; 0.9887 0.6577 0.3690; 0.9930 0.7266 0.4176; 0.9943 0.7899 0.4707;0.9956 0.8531 0.5238; 0.9968 0.9020 0.5846; 0.9981 0.9412 0.6503; 0.9994 0.9804 0.7161;0.9842 0.9937 0.7244; 0.9526 0.9810 0.6750; 0.9209 0.9684 0.6257; 0.8721 0.9486 0.6022;0.7975 0.9183 0.6173; 0.7228 0.8879 0.6325; 0.6444 0.8564 0.6435; 0.5571 0.8223 0.6448;0.4698 0.7881 0.6460; 0.3868 0.7461 0.6531; 0.3211 0.6727 0.6835; 0.2553 0.5994 0.7139;0.2016 0.5261 0.7378; 0.2573 0.4540 0.7036; 0.3130 0.3819 0.6694; 0.3686 0.3098 0.6353]Colormap;maxVpatchHdl;boxHdl;pieHdl;textHdlendmethodsfunction obj=SHeatmap(Data,varargin)obj.Data=Data;obj.maxV=max(max(abs(obj.Data)));% 获取其他数据disp(char([64 97 117 116 104 111 114 32 58 32,...115 108 97 110 100 97 114 101 114]))for i=1:2:(length(varargin)-1)tid=ismember(obj.arginList,varargin{i});if any(tid)obj.(obj.arginList{tid})=varargin{i+1};endend% 设置配色if any(any(obj.Data<0))obj.Colormap=obj.dfColor2;% tX=linspace(0,1,size(obj.Colormap,1));% tXi=linspace(0,1,256);% tR=interp1(tX,obj.Colormap(:,1),tXi);% tG=interp1(tX,obj.Colormap(:,2),tXi);% tB=interp1(tX,obj.Colormap(:,3),tXi);% obj.Colormap=[tR(:),tG(:),tB(:)];elseobj.Colormap=obj.dfColor1(end:-1:1,:);endendfunction obj=draw(obj)obj.ax=gca;hold on;box onobj.ax.FontName='Times New Roman';obj.ax.FontSize=12;obj.ax.LineWidth=.8;obj.ax.XLim=[.5,size(obj.Data,2)+.5];obj.ax.YLim=[.5,size(obj.Data,1)+.5];obj.ax.YDir='reverse';obj.ax.TickDir='out';obj.ax.TickLength=[0.002,0.002];obj.ax.DataAspectRatio=[1,1,1];obj.ax.YTick=1:size(obj.Data,1);obj.ax.XTick=1:size(obj.Data,2);colormap(obj.Colormap)colorbarif any(any(obj.Data<0))try caxis(obj.maxV.*[-1,1]),catch,endtry clim(obj.maxV.*[-1,1]),catch,endelsetry caxis(obj.maxV.*[0,1]),catch,endtry clim(obj.maxV.*[0,1]),catch,endend% 调整初始界面大小fig=obj.ax.Parent;fig.Color=[1,1,1];if max(fig.Position(3:4))<600fig.Position(3:4)=[1.6,1.8].*fig.Position(3:4);fig.Position(1:2)=fig.Position(1:2)./4;endbX1=repmat([.5,size(obj.Data,2)+.5,nan],[size(obj.Data,1)+1,1])';bY1=repmat((.5:1:(size(obj.Data,1)+.5))',[1,3])';bX2=repmat((.5:1:(size(obj.Data,2)+.5))',[1,3])';bY2=repmat([.5,size(obj.Data,1)+.5,nan],[size(obj.Data,2)+1,1])';obj.boxHdl=plot([bX1(:);bX2(:)],[bY1(:);bY2(:)],'LineWidth',.8,'Color',[1,1,1].*.85);if isequal(obj.Format,'sq')set(obj.boxHdl,'Color',[1,1,1,0])endbaseT=linspace(0,2*pi,200);hexT=linspace(0,2*pi,7);thetaMat=[1,-1;1,1].*sqrt(2)./2;for row=1:size(obj.Data,1)for col=1:size(obj.Data,2) if isnan(obj.Data(row,col))obj.patchHdl(row,col)=fill([-.5,.5,.5,-.5].*.98+col,[-.5,-.5,.5,.5].*.98+row,[.8,.8,.8],'EdgeColor','none');obj.pieHdl(row,col)=fill([0,0,0,0],[0,0,0,0],[0,0,0]);obj.textHdl(row,col)=text(col,row,'×','FontName','Times New Roman','HorizontalAlignment','center','FontSize',20);elsetRatio=abs(obj.Data(row,col))./obj.maxV;switch obj.Formatcase 'sq'obj.patchHdl(row,col)=fill([-.5,.5,.5,-.5].*.98+col,[-.5,-.5,.5,.5].*.98+row,...obj.Data(row,col),'EdgeColor','none');case 'asq'obj.patchHdl(row,col)=fill([-.5,.5,.5,-.5].*.98.*tRatio+col,[-.5,-.5,.5,.5].*.98.*tRatio+row,...obj.Data(row,col),'EdgeColor','none');case 'pie'baseCircX=cos(baseT).*.92.*.5;baseCircY=sin(baseT).*.92.*.5;obj.pieHdl(row,col)=fill(baseCircX+col,baseCircY+row,...[1,1,1],'EdgeColor',[1,1,1].*.3,'LineWidth',.8);baseTheta=linspace(pi/2,pi/2+obj.Data(row,col)./obj.maxV.*2.*pi,200);basePieX=[0,cos(baseTheta).*.92.*.5];basePieY=[0,sin(baseTheta).*.92.*.5];obj.patchHdl(row,col)=fill(basePieX+col,-basePieY+row,...obj.Data(row,col),'EdgeColor',[1,1,1].*.3,'lineWidth',.8);case 'circ'baseCircX=cos(baseT).*.92.*.5;baseCircY=sin(baseT).*.92.*.5;obj.patchHdl(row,col)=fill(baseCircX+col,baseCircY+row,...obj.Data(row,col),'EdgeColor','none','lineWidth',.8);case 'acirc'baseCircX=cos(baseT).*.92.*.5;baseCircY=sin(baseT).*.92.*.5;obj.patchHdl(row,col)=fill(baseCircX.*tRatio+col,baseCircY.*tRatio+row,...obj.Data(row,col),'EdgeColor','none','lineWidth',.8);case 'oval'tValue=obj.Data(row,col)./obj.maxV;baseA=1+(tValue<=0).*tValue;baseB=1-(tValue>=0).*tValue;baseOvalX=cos(baseT).*.98.*.5.*baseA;baseOvalY=sin(baseT).*.98.*.5.*baseB;baseOvalXY=thetaMat*[baseOvalX;baseOvalY];obj.patchHdl(row,col)=fill(baseOvalXY(1,:)+col,-baseOvalXY(2,:)+row,...obj.Data(row,col),'EdgeColor',[1,1,1].*.3,'lineWidth',.8);case 'hex'obj.patchHdl(row,col)=fill(cos(hexT).*.5.*.98.*tRatio+col,sin(hexT).*.5.*.98.*tRatio+row,...obj.Data(row,col),'EdgeColor',[1,1,1].*.3,'lineWidth',.8);endobj.textHdl(row,col)=text(col,row,sprintf('%.2f',obj.Data(row,col)),'FontName','Times New Roman','HorizontalAlignment','center','Visible','off');endendendend% 修饰文本function setText(obj,varargin)graymap=mean(get(obj.ax,'Colormap'),2);climit=get(obj.ax,'CLim');for row=1:size(obj.Data,1)for col=1:size(obj.Data,2) set(obj.textHdl(row,col),'Visible','on','Color',...[1,1,1].*(interp1(linspace(climit(1),climit(2),size(graymap,1)),graymap,obj.Data(row,col))<.5),varargin{:})endendendfunction setTextMN(obj,m,n,varargin)set(obj.textHdl(m,n),varargin{:})end% 设置图形样式function setPatch(obj,varargin)for row=1:size(obj.Data,1)for col=1:size(obj.Data,2) if ~isnan(obj.Data(row,col))set(obj.patchHdl(row,col),varargin{:})if isequal(obj.Format,'pie')set(obj.pieHdl(row,col),varargin{:}) endendendendendfunction setPatchMN(obj,m,n,varargin)set(obj.patchHdl(m,n),varargin{:})if isequal(obj.Format,'pie')set(obj.pieHdl(m,n),varargin{:})endend% 设置框样式function setBox(obj,varargin)set(obj.boxHdl,varargin{:})endend
% =========================================================================
% @author : slandarer
% gzh : slandarer随笔
% -------------------------------------------------------------------------
% Zhaoxu Liu / slandarer (2023). special heatmap
% (https://www.mathworks.com/matlabcentral/fileexchange/125520-special-heatmap),
% MATLAB Central File Exchange. 检索来源 2023/3/1.
% -------------------------------------------------------------------------
end
完
编程不易,希望大家该点赞的点赞
,该在看的在看!!
未经允许本代码请勿作商业用途,引用的话可以引用我file exchange上的链接,可使用如下格式:
Zhaoxu Liu / slandarer (2023). special heatmap (https://www.mathworks.com/matlabcentral/fileexchange/125520-special-heatmap), MATLAB Central File Exchange. 检索来源 2023/3/1.
若转载请保留以上file exchange链接及本文链接!!!!!
相关文章:

MATLAB | 这些花里胡哨的热图怎么画
好早之前写过一个绘制相关系数矩阵的代码,但是会自动求相关系数,而且画出来的热图只能是方形,这里写一款允许nan值出现,任意形状的热图绘制代码,绘制效果如下: 如遇到bug请后台提出,并去gitee下…...
Java开发的一些编码建议
1、无论是类、方法、字段、变量,尽可能的限制他们的作用范围,可以避免出现不必要的错误;同时虚拟机也能有更大的优化空间。 2、错误越早发现越好,编译时发生错误比在运行时发生错误好。而且编译时错误能更好的定位问题所在。 这…...

【YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进NO.59】引入ASPP模块
前言作为当前先进的深度学习目标检测算法YOLOv8,已经集合了大量的trick,但是还是有提高和改进的空间,针对具体应用场景下的检测难点,可以不同的改进方法。此后的系列文章,将重点对YOLOv8的如何改进进行详细的介绍&…...

C++STL set/multiset容器 构造和赋值 大小和交换 插入和删除 查找和统计
文章目录set/multiset容器1 set容器 基本概念2 set容器 构造和赋值3 set容器 大小和交换4 set容器 插入和删除5 set容器 查找和统计set/multiset容器 1 set容器 基本概念 简介: 所有元素都会在插入时会被自动排序,例如,在set容器放入元素1、…...

产品研发项目进度管理软件工具有哪些推荐?整理10款最佳进度管理软件
项目进度管理是确保项目按时完成的关键过程,使用合适的项目进度管理工具能确保帮助项目管理者实时了解和控制项目的进展情况,及时发现和解决问题,减少项目风险,提高项目效率和管理水平。这里将整理出国内外最受欢迎的10款项目进度…...

「ML 实践篇」分类系统:图片数字识别
目的:使用 MNIST 数据集,建立数字图像识别模型,识别任意图像中的数字; 文章目录1. 数据准备(MNIST)2. 二元分类器(SGD)3. 性能测试1. 交叉验证2. 混淆矩阵3. 查准率与查全率4. P-R 曲…...

从大专到测开,上海某字母站大厂的面试题,岗位是测开(25K*16)
简单介绍一句,大专出身,三年经验。跳了四次槽,面试了无数次,现在把自己的面试经验整理出来分享给大家,堪称必杀技! 1,一切从实际出发,对实际工作进行适当修饰 2,不会的简…...

【面试题】Python软件工程师能力评估试题(一)
文章目录前言应试者需知(一)Python 语言基础能力评估1、理解问题并完成代码:2、阅读理解代码,并在空白处补充完整代码:3、编写一个装饰器:exposer4、阅读代码并在空白处补充完整代码:5、自行用P…...
Java八股文(Java多线程面试题)
并行和并发的区别?(1)并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生;(2)并行是在不同实体上的多个事件,并发是在同一实体上的多个事件&#…...

小程序当前页面如何分享别的页面内容呢?
需求分析 因为功能的需要分为两点 他需要调转转发,并且有首页转发点击button按钮进行转发邀请好友帮忙助力,如何做到一个页面多种转发 如何区分,是button转发还剩右上角三个点转发呢? 通过onShareAppMessage()这个函数的事件…...

编写Java哪个编译器好
现在能够编写Java代码的工具简直不要太多,各种各样五花八门,但目前效率最高的还是Intellij Idea。但这个工具对于完全零基础的小白来说,第一次用起来是比较复杂的,因为它的功能太多了。这就好比你要学开车,如果上来就给…...

第十六章 Java为什么使用序列化
为何要指定serialVersionUID的值如果不指定显示serialVersionUID的值,jvm在序列化时会自动生成一个serialVersionUID,跟属性一起序列化,再进行持久化或者网络传输,在反序列化时,jvm会根据属性自动生成一个新版的serial…...

28岁小公司程序员,无车无房不敢结婚,要不要转行?
大家好,这里是程序员晚枫,又来分享程序员的职场故事了~ 今天分享的这位朋友叫小青,我认识他2年多了。以前从事的是土木行业,2年前找我咨询转行程序员的学习路线和职业规划后,通过自学加入了一家创业公司,成…...

出道即封神的ChatGPT,现在怎么样了?
从互联网的普及到智能手机,都让广袤的世界触手而及,如今身在浪潮中的我们,已深知其力。前阵子爆火的ChatGPT,不少人保持观望态度。现如今,国内关于ChatGPT的各大社群讨论,似乎沉寂了不少,现在怎…...

【计算机视觉】CNN 可视化算法
文章目录一、CAM算法1.1 概述1.2 CAM算法介绍二、Grad-CAM算法2.1 概述2.2 Guided Backpropagation2.3 Occlusion Sensitivity2.4 Grad-CAM 整体结构和效果2.5 Grad-CAM 实现细节一、CAM算法 1.1 概述 本文介绍 2016 年提出的 CAM (Class Activation Mapping) 算法࿰…...
自动抓取服务器巡检、登录、执行命令记录+备份脚本
文章目录 引抓取【巡检日志】语言&时区设置语言设置时区巡检脚本执行效果抓取【登录信息】登录脚本登录脚本低版本的last命令执行效果抓取【history记录】说明配置history授权日志文件显示时间戳持久化到日志未配置history的配置过history的执行脚本执行脚本...

如何用Python求解微分方程组
文章目录odeint简介示例odeint简介 scipy文档中将odeint函数和ode, comples_ode这两个类称为旧API,是scipy早期使用的微分方程求解器,但由于是Fortran实现的,尽管使用起来并不方便,但速度没得说,所以有的时候还挺推荐…...

【微信小程序】-- 自定义组件 - behaviors(三十九)
💌 所属专栏:【微信小程序开发教程】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...

【微信小程序】-- 自定义组件 - 父子组件之间的通信(三十八)
💌 所属专栏:【微信小程序开发教程】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...

Java Web 实战 11 - 多线程进阶之常见的锁策略
常见的锁策略常见的锁策略1. 乐观锁 VS 悲观锁2. 普通的互斥锁 VS 读写锁3. 重量级锁 VS 轻量级锁4. 自旋锁 VS 挂起等待锁5. 公平锁 VS 非公平锁6. 可重入锁 vs 不可重入锁7. 常见面试题大家好 , 这篇文章给大家带来的是多线程中常见的锁策略 , 我们会给大家讲解 6 种类别的锁…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...