MATLAB | 绘图复刻(二) | 折线图+误差棒+柱状图+散点抖动+灰色背景+图片叠加

news/2024/5/4 17:54:16/文章来源:https://blog.csdn.net/slandarer/article/details/127338907

看到gzh R语言ggplot2科研绘图发布了一篇绘图复刻类文章,复刻了:
Nature(IF=49.962)文章(Gut microbiota modulates weight gain in mice after discontinued smoke exposure)其中的Figure.1b,绘制效果十分惊艳,手痒就想拿MATLAB也绘制一下试试:

注:数据来自于R语言ggplot2科研绘图

折线图+误差棒+柱状图+散点抖动+灰色背景+图片叠加,要素属实有点多,这篇也会比较长。。

0 绘制效果

原绘制效果绘制效果:

本人复刻效果:

1 数据导入

由于数据不太规整,我们使用readtable读取table格式数据表,之后循环找到我们想要的数据。

Data=readtable('2022.1.15.CSV','VariableNamingRule','preserve');
% 获取各组数据的名称
treatName=unique(Data.treat,'stable');% 配色数据
colorList=[84,148,206;255,130,131;13,137,138;249,204,82]./255;for i=1:length(treatName)tempData=Data(strcmp(Data.treat,treatName{i}),:);% 将日期数据和value由table转换为array数组day=table2array(tempData(:,2));value=table2array(tempData(:,3:5));% 后续数据绘图% ... ...
end

配色数据提取的方式很多,可以qq取色或者ppt取色,我公众号上也有一些取色器工具,可以自行查找下载取用,这是图片中用到的配色:

2 基础绘图

在循环内部使用errorbar绘制带误差棒折线图,同时由于误差棒边缘粗细颜色,和最前面折线图不同,因此每组数据还要分别再画两个plot折线图用来绘制粗线条和圆点,这里的误差使用的是SEM误差,即std/sqrt(n):

% -------------------------------------------------------------------------
% 创建图窗并获取坐标区域
figure('Position',[500,200,560,520])
ax=gca;hold on
for i=1:length(treatName)tempData=Data(strcmp(Data.treat,treatName{i}),:);% 将日期数据和value由table转换为array数组day=table2array(tempData(:,2));value=table2array(tempData(:,3:5));% 绘制含误差条的折线图、及粗折线图、及圆点图errorbar(day,mean(value,2),std(value,1,2)/sqrt(size(value,2)),...'Color',[0,0,0],'LineWidth',1.8,'Marker','o','CapSize',8);plot(day,mean(value,2),'Color',colorList(i,:),'LineWidth',6)plot(day,mean(value,2),'o','LineWidth',1,'MarkerEdgeColor',[0,0,0],...'MarkerFaceColor',colorList(i,:),'MarkerSize',9);
end

3 生成图例

图像中的图例不是圆点或者直线,而是一个长方形,看起来更像是patch对象的图例,因此需要把循环绘图部分修改一下,创造屏幕外的patch对象用来当作图例的图标,同时将图例的AutoUpdate设置为off以避免后续绘图图例自动更改:

for i=1:length(treatName)tempData=Data(strcmp(Data.treat,treatName{i}),:);% 将日期数据和value由table转换为array数组day=table2array(tempData(:,2));value=table2array(tempData(:,3:5));% 绘制含误差条的折线图、及粗折线图、及圆点图errorbar(day,mean(value,2),std(value,1,2)/sqrt(size(value,2)),...'Color',[0,0,0],'LineWidth',1.8,'Marker','o','CapSize',8);plot(day,mean(value,2),'Color',colorList(i,:),'LineWidth',6)plot(day,mean(value,2),'o','LineWidth',1,'MarkerEdgeColor',[0,0,0],...'MarkerFaceColor',colorList(i,:),'MarkerSize',9);% 循环生成patch对象用来当作图例的图标patchHdl(i)=fill([0,0,0,0],[0,0,0,0],colorList(i,:),'LineWidth',1.2);
end
legend(patchHdl,{'Non\_SMK   ','SMK','Non\_SMK+abx','SMK+abx'},'AutoUpdate','off',...'Location','northoutside','NumColumns',4,'Box','off','FontSize',12)

4 增添灰色区域和常量线

就是用plot函数绘制直线,使用fill函数画灰色区域,并用uistack函数把这俩放在最下面,这里没用xline画常量线是因为推出较晚(R2018b),且层级关系不好捋顺:

% 绘制区域分隔虚线,这里没用xline是因为推出较晚(R2018b),且层级关系不好捋顺
xLineHdl=plot([21,21],[0,60],'LineWidth',1.8,'LineStyle','--','Color',[0,0,0]);
uistack(xLineHdl,'bottom')% 绘制灰色区域并移动到最下方
grayAreaHdl=fill([21,21,40,40],[0+.2,60,60,0+.2],[229,229,229]./255,'EdgeColor','none');
uistack(grayAreaHdl,'bottom')

5 坐标区域修饰

调整坐标区域字体啊标签啊,横纵坐标比例等一系列元素,详细请看下面代码和注释:

ax=gca;
% 调整边缘空间
ax.LooseInset=[0,0,0,0];
% 控制轴范围
ax.YLim=[0,60];
ax.XLim=[0,40];
ax.XTick=0:10:40;
ax.YTick=0:20:60;
% 修改xy轴标签和字体
ax.XLabel.String='Day';
ax.YLabel.String='Weight change(%)';
ax.XLabel.FontSize=14;
ax.YLabel.FontSize=14;
ax.XLabel.FontWeight='bold';
ax.YLabel.FontWeight='bold';
% 设置轴线粗细和刻度朝外
ax.LineWidth=1.5;
ax.TickDir='out';

6 添加显著性标记

提前算好显著性水平后就直接用plottext添加标记就好了,不是很难:

% 添加显著性标志
plot([36.2,36.2],[18,26],'Color',[0,0,0],'LineWidth',2.5)
plot([38,38],[18,40],'Color',[0,0,0],'LineWidth',2.5)
text(37.3,22,'***','Rotation',90,'FontSize',17,'HorizontalAlignment','center','FontWeight','bold')
text(39.3,29,'****','Rotation',90,'FontSize',17,'HorizontalAlignment','center','FontWeight','bold')

7 生成子图坐标区域

使用axes函数在当前图窗gcf生成俩新的坐标区域,设置背景色Color为透明none

% 左上角坐标区域
ax2=axes(gcf,'Position',[.11,.69,.4,.17]);
hold on
ax2.XLim=[-50,600];
ax2.Color='none';
ax2.LineWidth=1.5;
ax2.TickDir='out';
ax2.FontSize=12;
ax2.XTick=0:200:600;
ax2.YTick=[];
ax2.Title.String='iAUC: Exposure';
ax2.Title.FontWeight='bold';
ax2.Title.FontSize=15;
ax2.YDir='reverse';
ax2.YLim=[.4,4.6];
% -------------------------------------------------------------------------
% 右上角坐标区域
ax3=axes(gcf,'Position',[.595,.69,.365,.17]);
hold on
ax3.XLim=[0,500];
ax3.Color='none';
ax3.LineWidth=1.5;
ax3.TickDir='out';
ax3.FontSize=12;
ax3.XTick=0:100:500;
ax3.YTick=[];
ax3.Title.String='iAUC: Cessation';
ax3.Title.FontWeight='bold';
ax3.Title.FontSize=15;
ax3.YDir='reverse';
ax3.YDir='reverse';
ax3.YLim=[.4,4.6];

8 柱状图绘制

比如在左侧ax2绘制柱状图,右侧ax3同理,同时因为0基线太细,我们要获取基线的句柄并将其加粗:

% 获取第一组柱状图数据并删除缺失值
barData1=[Data.Non_SMK,Data.SMK,Data.("Non_SMK+abx"),Data.("SMK+abx")];
barData1(isnan(barData1(:,1)),:)=[];
barHdl=barh(ax2,mean(barData1),'FaceColor',[1,1,1],'LineWidth',1.2,'EdgeColor',[0,0,0]);
% 设置0基线属性
barBaseLineHdl=barHdl.BaseLine;
barBaseLineHdl.LineWidth=1.2;

9 绘制柱状图误差条

还是使用errorbar函数,不过设置horizontal属性将其变为横向,同时设置LineStyle属性为none隐藏折线部分:

% 绘制误差条
errorbar(ax2,mean(barData1),1:4,std(barData1,1)./sqrt(size(barData1,1)),...'horizontal','LineStyle','none','LineWidth',1.2,'Color',[0,0,0])

10 绘制抖动散点

使用scatter绘制并设置YJitter抖动,不过该属性出现较晚,请使用R2020b及以后版本:

% 绘制抖动散点图
for i=1:4scatter(ax2,barData1(:,i),i.*ones(1,size(barData1,1)),20,...'filled','YJitter','density','CData',colorList(i,:))
end


老版本请使用如下方案:

% 老版本方案
% 绘制抖动散点图
for i=1:4scatter(ax2,barData1(:,i),i+rand(1,size(barData1,1)).*.8-.4,20,...'filled','CData',colorList(i,:))
end

11 绘制子图显著性标志

还是用plottext绘制:

% 添加显著性标志
plot(ax2,[370,370],[1,2],'Color',[0,0,0],'LineWidth',2.5)
plot(ax2,[530,530],[3,4],'Color',[0,0,0],'LineWidth',2.5)
text(ax2,410,1.5,'****','Rotation',90,'FontSize',17,'HorizontalAlignment','center','FontWeight','bold')
text(ax2,570,3.5,'****','Rotation',90,'FontSize',17,'HorizontalAlignment','center','FontWeight','bold')

12 子图绘制完整代码

% =========================================================================
% 子图绘制
% 左上角坐标区域
ax2=axes(gcf,'Position',[.11,.69,.4,.17]);
hold on
ax2.XLim=[-50,600];
ax2.Color='none';
ax2.LineWidth=1.5;
ax2.TickDir='out';
ax2.FontSize=12;
ax2.XTick=0:200:600;
ax2.YTick=[];
ax2.Title.String='iAUC: Exposure';
ax2.Title.FontWeight='bold';
ax2.Title.FontSize=15;
ax2.YDir='reverse';
ax2.YLim=[.4,4.6];
% -------------------------------------------------------------------------
% 获取第一组柱状图数据并删除缺失值
barData1=[Data.Non_SMK,Data.SMK,Data.("Non_SMK+abx"),Data.("SMK+abx")];
barData1(isnan(barData1(:,1)),:)=[];
barHdl=barh(ax2,mean(barData1),'FaceColor',[1,1,1],'LineWidth',1.2,'EdgeColor',[0,0,0]);
% 设置0基线属性
barBaseLineHdl=barHdl.BaseLine;
barBaseLineHdl.LineWidth=1.2;
% 绘制误差条
errorbar(ax2,mean(barData1),1:4,std(barData1,1)./sqrt(size(barData1,1)),...'horizontal','LineStyle','none','LineWidth',1.2,'Color',[0,0,0])
% 绘制抖动散点图
for i=1:4scatter(ax2,barData1(:,i),i.*ones(1,size(barData1,1)),20,...'filled','YJitter','density','CData',colorList(i,:))
end
% % 老版本方案
% % 绘制抖动散点图
% for i=1:4
%     scatter(ax2,barData1(:,i),i+rand(1,size(barData1,1)).*.8-.4,20,...
%         'filled','CData',colorList(i,:))
% end% 添加显著性标志
plot(ax2,[370,370],[1,2],'Color',[0,0,0],'LineWidth',2.5)
plot(ax2,[530,530],[3,4],'Color',[0,0,0],'LineWidth',2.5)
text(ax2,410,1.5,'****','Rotation',90,'FontSize',17,'HorizontalAlignment','center','FontWeight','bold')
text(ax2,570,3.5,'****','Rotation',90,'FontSize',17,'HorizontalAlignment','center','FontWeight','bold')
% -------------------------------------------------------------------------
% 右上角坐标区域
ax3=axes(gcf,'Position',[.595,.69,.365,.17]);
hold on
ax3.XLim=[0,500];
ax3.Color='none';
ax3.LineWidth=1.5;
ax3.TickDir='out';
ax3.FontSize=12;
ax3.XTick=0:100:500;
ax3.YTick=[];
ax3.Title.String='iAUC: Cessation';
ax3.Title.FontWeight='bold';
ax3.Title.FontSize=15;
ax3.YDir='reverse';
ax3.YDir='reverse';
ax3.YLim=[.4,4.6];
% -------------------------------------------------------------------------
% 获取第一组柱状图数据并删除缺失值
barData2=[Data.Non_SMK_1,Data.SMK_1,Data.("Non_SMK+abx_1"),Data.("SMK+abx_1")];
barData2(isnan(barData2(:,1)),:)=[];
barHdl=barh(ax3,mean(barData2),'FaceColor',[1,1,1],'LineWidth',1.2,'EdgeColor',[0,0,0]);
% 设置0基线属性
barBaseLineHdl=barHdl.BaseLine;
barBaseLineHdl.LineWidth=1.2;
% 绘制误差条
errorbar(ax3,mean(barData2),1:4,std(barData2,1)./sqrt(size(barData2,1)),...'horizontal','LineStyle','none','LineWidth',1.2,'Color',[0,0,0])
% 绘制抖动散点图
for i=1:4scatter(ax3,barData2(:,i),i.*ones(1,size(barData2,1)),20,...'filled','YJitter','density','CData',colorList(i,:))
end
% % 老版本方案
% % 绘制抖动散点图
% for i=1:4
%     scatter(ax3,barData1(:,i),i+rand(1,size(barData2,1)).*.8-.4,20,...
%         'filled','CData',colorList(i,:))
% end% 添加显著性标志
plot(ax3,[430,430],[1,2],'Color',[0,0,0],'LineWidth',2.5)
plot(ax3,[420,420],[3,4],'Color',[0,0,0],'LineWidth',2.5)
text(ax3,465,1.5,'****','Rotation',90,'FontSize',17,'HorizontalAlignment','center','FontWeight','bold')
text(ax3,455,3.5,'****','Rotation',90,'FontSize',17,'HorizontalAlignment','center','FontWeight','bold')


完整代码

% @author : slandarer
% gzh  : slandarer随笔
% zh    : 已由hikari更名slandarer
Data=readtable('2022.1.15.CSV','VariableNamingRule','preserve');
treatName=unique(Data.treat,'stable');% 配色数据
colorList=[84,148,206;255,130,131;13,137,138;249,204,82]./255;
% -------------------------------------------------------------------------
% 创建图窗获取坐标区域
figure('Position',[500,200,600,580],'Name','slandarer')
ax=gca;hold on
for i=1:length(treatName)tempData=Data(strcmp(Data.treat,treatName{i}),:);% 将日期数据和value由table转换为array数组day=table2array(tempData(:,2));value=table2array(tempData(:,3:5));% 绘制含误差条的折线图、及粗折线图、及圆点图errorbar(day,mean(value,2),std(value,1,2)/sqrt(size(value,2)),...'Color',[0,0,0],'LineWidth',1.8,'Marker','o','CapSize',8);plot(day,mean(value,2),'Color',colorList(i,:),'LineWidth',6)plot(day,mean(value,2),'o','LineWidth',1,'MarkerEdgeColor',[0,0,0],...'MarkerFaceColor',colorList(i,:),'MarkerSize',9);% 循环生成patch对象用来当作图例的图标patchHdl(i)=fill([0,0,0,0],[0,0,0,0],colorList(i,:),'LineWidth',1.2);
end
legend(patchHdl,{'Non\_SMK   ','SMK','Non\_SMK+abx','SMK+abx'},'AutoUpdate','off',...'Location','northoutside','NumColumns',4,'Box','off','FontSize',12)% -------------------------------------------------------------------------
% 坐标区域修饰
% 调整边缘空间
ax.LooseInset=[0,0,0,0];
% 控制轴范围
ax.YLim=[0,60];
ax.XLim=[0,40];
ax.XTick=0:10:40;
ax.YTick=0:20:60;
% 修改xy轴标签和字体
ax.XLabel.String='Day';
ax.YLabel.String='Weight change(%)';
ax.XLabel.FontSize=14;
ax.YLabel.FontSize=14;
ax.XLabel.FontWeight='bold';
ax.YLabel.FontWeight='bold';
% 设置轴线粗细和刻度朝外
ax.LineWidth=1.5;
ax.TickDir='out';% -------------------------------------------------------------------------
% 灰色区域和常量线
% 绘制区域分隔虚线,这里没用xline是因为推出较晚(R2018b),且层级关系不好捋顺
xLineHdl=plot([21,21],[0,60],'LineWidth',1.8,'LineStyle','--','Color',[0,0,0]);
uistack(xLineHdl,'bottom')% 绘制灰色区域并移动到最下方
grayAreaHdl=fill([21,21,40,40],[0+.2,60,60,0+.2],[229,229,229]./255,'EdgeColor','none');
uistack(grayAreaHdl,'bottom')% -------------------------------------------------------------------------
% 添加显著性标志
plot([36.2,36.2],[18,26],'Color',[0,0,0],'LineWidth',2.5)
plot([38,38],[18,40],'Color',[0,0,0],'LineWidth',2.5)
text(37.3,22,'***','Rotation',90,'FontSize',17,'HorizontalAlignment','center','FontWeight','bold')
text(39.3,29,'****','Rotation',90,'FontSize',17,'HorizontalAlignment','center','FontWeight','bold')% =========================================================================
% 子图绘制
% 左上角坐标区域
ax2=axes(gcf,'Position',[.11,.69,.4,.17]);
hold on
ax2.XLim=[-50,600];
ax2.Color='none';
ax2.LineWidth=1.5;
ax2.TickDir='out';
ax2.FontSize=12;
ax2.XTick=0:200:600;
ax2.YTick=[];
ax2.Title.String='iAUC: Exposure';
ax2.Title.FontWeight='bold';
ax2.Title.FontSize=15;
ax2.YDir='reverse';
ax2.YLim=[.4,4.6];
% -------------------------------------------------------------------------
% 获取第一组柱状图数据并删除缺失值
barData1=[Data.Non_SMK,Data.SMK,Data.("Non_SMK+abx"),Data.("SMK+abx")];
barData1(isnan(barData1(:,1)),:)=[];
barHdl=barh(ax2,mean(barData1),'FaceColor',[1,1,1],'LineWidth',1.2,'EdgeColor',[0,0,0]);
% 设置0基线属性
barBaseLineHdl=barHdl.BaseLine;
barBaseLineHdl.LineWidth=1.2;
% 绘制误差条
errorbar(ax2,mean(barData1),1:4,std(barData1,1)./sqrt(size(barData1,1)),...'horizontal','LineStyle','none','LineWidth',1.2,'Color',[0,0,0])
% 绘制抖动散点图
for i=1:4scatter(ax2,barData1(:,i),i.*ones(1,size(barData1,1)),20,...'filled','YJitter','density','CData',colorList(i,:))
end
% % 老版本方案
% % 绘制抖动散点图
% for i=1:4
%     scatter(ax2,barData1(:,i),i+rand(1,size(barData1,1)).*.8-.4,20,...
%         'filled','CData',colorList(i,:))
% end% 添加显著性标志
plot(ax2,[370,370],[1,2],'Color',[0,0,0],'LineWidth',2.5)
plot(ax2,[530,530],[3,4],'Color',[0,0,0],'LineWidth',2.5)
text(ax2,410,1.5,'****','Rotation',90,'FontSize',17,'HorizontalAlignment','center','FontWeight','bold')
text(ax2,570,3.5,'****','Rotation',90,'FontSize',17,'HorizontalAlignment','center','FontWeight','bold')
% -------------------------------------------------------------------------
% 右上角坐标区域
ax3=axes(gcf,'Position',[.595,.69,.365,.17]);
hold on
ax3.XLim=[0,500];
ax3.Color='none';
ax3.LineWidth=1.5;
ax3.TickDir='out';
ax3.FontSize=12;
ax3.XTick=0:100:500;
ax3.YTick=[];
ax3.Title.String='iAUC: Cessation';
ax3.Title.FontWeight='bold';
ax3.Title.FontSize=15;
ax3.YDir='reverse';
ax3.YDir='reverse';
ax3.YLim=[.4,4.6];
% -------------------------------------------------------------------------
% 获取第一组柱状图数据并删除缺失值
barData2=[Data.Non_SMK_1,Data.SMK_1,Data.("Non_SMK+abx_1"),Data.("SMK+abx_1")];
barData2(isnan(barData2(:,1)),:)=[];
barHdl=barh(ax3,mean(barData2),'FaceColor',[1,1,1],'LineWidth',1.2,'EdgeColor',[0,0,0]);
% 设置0基线属性
barBaseLineHdl=barHdl.BaseLine;
barBaseLineHdl.LineWidth=1.2;
% 绘制误差条
errorbar(ax3,mean(barData2),1:4,std(barData2,1)./sqrt(size(barData2,1)),...'horizontal','LineStyle','none','LineWidth',1.2,'Color',[0,0,0])
% 绘制抖动散点图
for i=1:4scatter(ax3,barData2(:,i),i.*ones(1,size(barData2,1)),20,...'filled','YJitter','density','CData',colorList(i,:))
end
% % 老版本方案
% % 绘制抖动散点图
% for i=1:4
%     scatter(ax3,barData1(:,i),i+rand(1,size(barData2,1)).*.8-.4,20,...
%         'filled','CData',colorList(i,:))
% end% 添加显著性标志
plot(ax3,[430,430],[1,2],'Color',[0,0,0],'LineWidth',2.5)
plot(ax3,[420,420],[3,4],'Color',[0,0,0],'LineWidth',2.5)
text(ax3,465,1.5,'****','Rotation',90,'FontSize',17,'HorizontalAlignment','center','FontWeight','bold')
text(ax3,455,3.5,'****','Rotation',90,'FontSize',17,'HorizontalAlignment','center','FontWeight','bold')


【链接】:https://pan.baidu.com/s/1L3VpjMGkdCQ6ljEZxQxGiQ?pwd=slan
【提取码】:slan

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RocketMQ 消费者Rebalance算法 解析——图解、源码级解析

🍊 Java学习:Java从入门到精通总结 🍊 深入浅出RocketMQ设计思想:深入浅出RocketMQ设计思想 🍊 绝对不一样的职场干货:大厂最佳实践经验指南 📆 最近更新:2022年10月15日 &#…

(附源码)计算机毕业设计大学生网上书店

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

(附源码)计算机毕业设计电脑外设销售系统小程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

操作系统基本功能(操作系统)

目录 一、处理机管理 二、存储器管理 三、设备管理 四、文件管理 五、作业管理 一、处理机管理 中央处理机(CPU)是计算机系统中一个举足轻重的资源。用户程序进入内存后,只有获得CPU,才能真正得以运行。 为了提高CPU的利用率…

前端都应该了解的 NodeJs 知识及原理浅析

node.js 初探 Node.js 是一个 JS 的服务端运行环境,简单的来说,它是在 JS 语言规范的基础上,封装了一些服务端的运行时对象,让我们能够简单实现非常多的业务功能。 如果我们只使用 JS 的话,实际上只是能进行一些简单…

docker mysql8使用SSL及使用openssl生成自定义证书

《docker安装MySQL8》 修改my.cnf vi /docker_data/mysql/conf/my.cnf[client] default-character-setutf8mb4 [mysql] default-character-setutf8mb4 [mysqld] character-set-serverutf8mb4 default_authentication_pluginmysql_native_password #增加ssl ssl保存&#xff0…

【让你从0到1学会c语言】文件操作

作者:喜欢猫咪的的程序员 专栏:《C语言》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 目录 什么是文件: 我们为什么要使用文件呢? 文件分类&#x…

rbf神经网络和bp神经网络,rbf神经网络百度百科

1、rbf神经网络算法是什么? RBF神经网络算法是由三层结构组成,输入层至隐层为非线性的空间变换,一般选用径向基函数的高斯函数进行运算;从隐层至输出层为线性空间变换,即矩阵与矩阵之间的变换。 RBF神经网络进行数据运算时需要…

基于springboot的旅游打卡攻略分享小程序

💖💖作者:IT跃迁谷毕设展 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等。平常会做一些项目定制化开发…

预处理的补充知识

🏖️作者:malloc不出对象 ⛺专栏:《初识C语言》 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录一、宏的补充知识1.1 宏定义充当注释…

MABSA(Multimodal Aspect-Based Sentiment Analysis)2022ACL 预训练

大致浏览,没有细看。 论文题目(Title): Vision-Language Pre-Training for Multimodal Aspect-Based Sentiment Analysis 研究问题(Question):多模态情感分析 MABSA (Multimodal Aspectased S…

黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day14-面向对象进阶02

1、权限修饰符和代码块 1.1 权限修饰符 权限修饰符:是用来控制一个成员能够被访问的范围的。 可以修饰:成员变量、方法、构造方法、内部类。 巧计举例: private--------私有的----------相当于私房钱,只能自己用 默认--------…

LVS+KeepAlived高可用负载均衡集群

内容预知 1. 高可用群集的相关知识 1. 1 高可用(HA)群集与普通群集的比较 普通群集 高可用群集(HA) 1.2 KeepAlive 高可用方案 1.3 KeepAlived的体系模块 1.4 Keepalived实现原理 2. 高可用群集的脑裂现象及预防措施 2.1 高可用集群的脑裂现象及其…

树莓派学习笔记

记录一下树莓派的使用,包含操作系统、linux命令、python、硬件等知识。参考《树莓派开发实战》树莓派简介及型号 树莓派(Raspberry Pi)是一款基于 Linux 系统的、只有一张信用卡大小的卡片式计算机,树莓派已经成为基于 Linux 的低成本电脑和嵌入式计算机平台这个领域中的重…

Material UI – React (2022) 版的完整教程

Material UI – React (2022) 版的完整教程 这是关于 Material UI 的最期待的课程。该课程涵盖了 Material UI 的所有组件 课程英文名:Material UI - The Complete Guide With React (2022) Editio 此视频教程共5.5小时,中英双语字幕,画质…

【贝塞尔曲线拟合】

贝塞尔曲线拟合问题描述拟合曲线生成过程参考程序注意事项问题描述 已知一条n阶贝塞尔曲线L(P0,P1,P2,P3,...,Pn)L(P0, P1, P2, P3, ..., Pn)L(P0,P1,P2,P3,...,Pn)(P0P0P0为起点,P1P1P1为第一个控制点,P2P2P2为第二个控制点,P3P…

Mysql删除重复数据只保留一条

(1)以这张表为例: CREATE TABLE test (id varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 注解id,name varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 名字,PRIMARY KEY…

队列的顺序存储结构

说白了,就是一个数组 ,然后在两端进行操作 ,两端用首队指针和尾指针分别指向 ,然后进行相关的删除,插入操作, 目的还是模拟现实对数据的处理 ●描述队列 •数据元素data , 元素具有同一类型ElemType ,最多为MaxSize(数组容量) •当前队首front •当前队尾 rear 定义队列的数据…

RK3588安装部署openmediavault

RK3588安装部署openmediavault部署准备Debian 10 文件系统编译和获取安装 openmediavault安装基础依赖安装 openmediavault 原秘钥环添加 openmediavault 官方原安装 openmediavault 基础依赖安装 openmediavaultopenmediavault 相关资料: https://docs.openmediav…

YOLOX 学习笔记

笔记来源:https://www.bilibili.com/video/BV1jo4y1D7CF/?vd_source2ed6e8af02f9ba8cb90b90e99bd4ccee 近年来,目标检测的工程应用研究中,YOLO系列以快速响应、高精度、结构简单以及容易部署的特点备受工程研究人员的青睐。同时,…