【matlab】气泡图的应用

news2025/4/24 11:32:09

【matlab】气泡图的应用

在这里插入图片描述

.rtcContent { padding: 30px; } .lineNode {font-size: 12pt; font-family: "Times New Roman", Menlo, Monaco, Consolas, "Courier New", monospace; font-style: normal; font-weight: normal; }
clear
load zb_equi.mat
load   zb_end.mat
h=1.4;
rate=nan(length(r),length(c0));
for i=1:length(c0)
    x=(0:1:101-1)*dx(i) ;
    x1=x(end)/(zb_equi(1,i)-zb_equi(end,i))*(zb_equi(1,i)+h);
    x3=interp1(zb_equi(:,i),x,h);
    for j=1:length(zb_end{1}(1,:))
         x2=x(end)/(zb_end{i}(1,j)-zb_end{i}(end,j))*(zb_end{i}(1,j)+h);
        x4=interp1(zb_end{i}(:,j),x,h);
        rate(j,i)=((x4-x2)-(x3-x1))/(x3-x1)/13;
    end
end
[xx,yy]=meshgrid(c0*1000,r);
levels = [-0.01 -0.007 -0.005 -0.003 -0.001 -0.0005 0 0.003 0.005 0.01 0.02];
xf=720;
yf=620;
figure('Position', [0, 0, xf, yf])
a=subplot('Position',[0.1*700/xf (0.35*700-80)/yf 0.8*700/xf 0.6*700/yf]);
set(gca,'units','point')
ylim([0 120])
[Cc,c]=contourf(xx,yy,rate,levels);
levels = clabel(Cc,c,'manual','fontsize',11,'color',[0.3 0.3 0.3],'fontname','times new roman');
for i = 1:numel(levels)
    label = sprintf('%g%%', 100*str2double(levels(i).String));
    levels(i).String = label;
end
c.LineWidth = 0.2;
c.LineColor = [0.5 0.5 0.5];
hold on
[C,c1]=contour(xx,yy,rate,[-0.0005 0.003]);
c1.LineColor = [0 0 0];
x1=C(1,2:C(2,1)+1);
y1=C(2,2:C(2,1)+1);
x2=C(1,C(2,1)+3:end);
y2=C(2,C(2,1)+3:end);
x1=[20 x1];
y1=[-0.03 y1];
p3=fill([x1 fliplr(x2)],[y1 fliplr(y2)],'g' , 'EdgeColor',[0 0 0], 'FaceAlpha', 0.1);
plot([50 50],[-0.03 0.03],'--',[75 75],[-0.03 0.03],'--','LineWidth',2,'Color',[.4 .4 .4])
[cmap_smooth] = create_custom_colormap(-0.01, 0.03,[21 151 165]/256, [254 179 174;246 111 105;239 65 67]/256, 40);
h=colorbar('Location', 'east', 'Position', [0.91*700/xf, (0.4*700-80)/yf, 0.03*700/xf, 0.5*700/yf]);
ylabel(h,'Trend of tidal flat width (%/year)','Fontsize',11,'Fontname','times new roman')
colormap(cmap_smooth);
set(gca,'YTickLabel',num2str(get(gca,'YTick')'*100,'%g%%'))
set(gca,'TickLength',[0 0])
xlim([20 120])
ylim([-0.03 0.03])
hold on
%%
clearvars -except h p3 xf yf
table_tidalflat = readtable('China_tidalflat.csv','VariableNamingRule','preserve');
tidalflat = table2array(table_tidalflat);
tidalflat(:,9:10) = tidalflat(:,9:10)/100;
zeroloc=isnan(tidalflat(:,5));
tidalflat(zeroloc,:)=[];
nanloc1=find(isnan(tidalflat(:,6)));
tidalflat(nanloc1,:)=[];
nanloc3=find(isnan(tidalflat(:,10)));
tidalflat(nanloc3,:)=[];
nanloc2=find(isnan(tidalflat(:,9)));
tidalflat(nanloc2,:)=[];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[swh_uni,aa]=unique(tidalflat(:,9),'stable');
tf_unique=nan(length(swh_uni),length(tidalflat(1,:)));
for i=1:length(aa)
    loc=find(tidalflat(:,9)==swh_uni(i));
    slope_loc=tidalflat(loc,:);
    tf_unique(i,:)=mean(slope_loc,1,'omitnan');
end
tf_unique(tf_unique(:,10)>0.2,:)=[];
ssc_vec = tf_unique(:,7);
width_rate_vec = tf_unique(:,10);
ssc_rate_vec = tf_unique(:,9);
ssc_range = [20 60 100 140];
ssc_rate_range=linspace(-0.03,0.03,5);
P2=[];
bili=0.48;
for i = 1:length(ssc_rate_range)-1
    ssc_rate_min = ssc_rate_range(i);
    ssc_rate_max = ssc_rate_range(i+1);
    idx = find(ssc_rate_vec >= ssc_rate_min & ssc_rate_vec <= ssc_rate_max & ssc_vec < 50);
    L=length(idx);
    disp(L)
    if L<15
        continue
    else
    slope_idx=sortrows(tf_unique(idx,:),10);
    p = slope_idx(floor(L*bili):ceil(L*(1-bili)),:);
    P2=[P2;p];
    end
end
P1 = [];
for i = 1:length(ssc_rate_range)-1
    ssc_rate_min = ssc_rate_range(i);
    ssc_rate_max = ssc_rate_range(i+1);
    idx = find(ssc_rate_vec >= ssc_rate_min & ssc_rate_vec <= ssc_rate_max & ssc_vec > 50);
    L=length(idx);
    disp(L)
    if L<15
        continue
    else
    slope_idx=sortrows(tf_unique(idx,:),10);
    p = slope_idx(floor(L*bili):ceil(L*(1-bili)),:);
    P1=[P1;p];
    end
end
P=[P2;P1];
P(P(:,7)<20|P(:,7)>120,:)=[];
P(P(:,9)<-0.03|P(:,9)>0.03,:)=[];
P=sortrows(P,3);
P(:,end+1)=distance(P(:,3),P(:,2),P(32,3),P(32,2),6371393);
P=sortrows(P,12);
P(5:30,:)=sortrows(P(5:30,:),3,'descend');
P(31:34,:)=sortrows(P(31:34,:),2,'descend');
slope_plot=P;
x = P(:,7);
y = P(:,9);
c = P(:,10);
positive_c = c > 0;
negative_c = c < 0;
abs_c = abs(c);
min_size = 100;
max_size = 2000;
size_range = max_size - min_size;
s = min_size + size_range * ((abs_c-min(abs_c)) / (max(abs_c)-min(abs_c)));
s_1=min_size + size_range * ((0.01-min(abs_c)) / (max(abs_c)-min(abs_c)));
s_01=min_size + size_range * ((0.001-min(abs_c)) / (max(abs_c)-min(abs_c)));
min_size = 8;
max_size = 12;
size_range = max_size - min_size;
ts = min_size + size_range * ((abs_c-min(abs_c)) / (max(abs_c)-min(abs_c)));
p2=scatter(x(negative_c), y(negative_c), s(negative_c),'markeredgecolor',[1 1 1],'markerfacecolor', [78 171 144]/256,'MarkerFaceAlpha',0.7,'linewidth',1);
hold on;
p1=scatter(x(positive_c), y(positive_c), s(positive_c),'MarkerEdgeColor',[1 1 1],'markerfacecolor',[233 122 94]/256,'MarkerFaceAlpha',0.7,'linewidth',1);
[lgd,lg]=legend([p1 p2 p3],{'Expand','Retreat','Neutral zone'},'position',[0.2*700/xf (0.17*700-80)/yf 0.4*700/xf 0.1*700/yf],'Orientation','horizontal');
annotation('ellipse',[0.65 (0.175*700-80)/yf (s_1^0.5)/420*560/xf (s_1^0.5)/420*560/yf],'LineWidth',1,'Color','k','LineStyle','-.');
x_01=0.65+(s_1^0.5)/420*560/xf/2-(s_01^0.5)/420*560/xf/2;
annotation('ellipse',[x_01 (0.175*700-80)/yf (s_01^0.5)/420*560/xf (s_01^0.5)/420*560/yf],'LineWidth',1,'Color','k','LineStyle','-.');
xx_1=[0.65+(s_1^0.5)/420*560/xf/2+0.1 0.65+(s_1^0.5)/420*560/xf/2];yy_1=[(0.175*700-80)/yf+(s_1^0.5)/420*560/yf (0.175*700-80)/yf+(s_1^0.5)/420*560/yf];
annotation('textarrow',xx_1,yy_1,'String','1% ','HeadLength',4,'HeadWidth',4,'LineWidth',0.5)
xx_01=[0.65+(s_1^0.5)/420*560/xf/2+0.05 0.65+(s_1^0.5)/420*560/xf/2];yy_01=[(0.175*700-80)/yf+(s_01^0.5)/420*560/yf (0.175*700-80)/yf+(s_01^0.5)/420*560/yf];
annotation('textarrow',xx_01,yy_01,'String','0.1% ','HeadLength',4,'HeadWidth',4,'LineWidth',0.5)
lg(4).Children.MarkerSize = 12;
lg(5).Children.MarkerSize = 12;
lg(6).FaceAlpha=0.1;
lg(6).Vertices(1,2)=lg(6).Vertices(1,2)+0.2;
lg(6).Vertices(2,2)=lg(6).Vertices(2,2)-0.2;
lg(6).Vertices(3,2)=lg(6).Vertices(3,2)-0.2;
lg(6).Vertices(4,2)=lg(6).Vertices(4,2)+0.2;
legend('boxoff')
set(gca,'YTickLabel',num2str(get(gca,'YTick')'*100,'%g%%'))
set(gca,'FontSize',12,'fontname','times new roman');
set(h,'YTick',[-0.01 0 0.01 0.02 0.03],'fontsize',9)
set(h,'YTickLabel',num2str(get(h,'YTick')'*100,'%g%%'))
xlabel('current SSC (mg/L)','fontsize',15,'fontweight','bold')
ylabel('SSC change rate (year^{-1})','fontsize',15,'fontweight','bold')
xlim([20 120])
ylim([-0.03 0.03])
for i=1:length(x)
    text(x(i),y(i),num2str(i),'Color','black','FontSize',ts(i),'HorizontalAlignment','center','VerticalAlignment','middle')
end
%%
h1=axes('position',[0.72*700/xf (0.77*700-80)/yf 0.18*700/xf 0.18*700/yf]);	
axis(h1);	
World =shaperead('landareas.shp','UseGeoCoords',true);
ChinaL=shaperead('china1.shp');
ChinaP=shaperead('china2.shp');
hold on
geoshow(ChinaP,'facecolor',[.7 .7 .7],'edgecolor',[.8 .8 .8])
mapshow(ChinaL,'color',[.8 .8 .8])
scatter(slope_plot(positive_c,2),slope_plot(positive_c,3),20,[233 122 94]/256,'filled')
scatter(slope_plot(negative_c,2),slope_plot(negative_c,3),20,[78 171 144]/256,'filled')
x=[slope_plot(1,2) slope_plot(4,2)-1 slope_plot(5,2)-1 slope_plot(11,2)-2 slope_plot(12,2)-2.5 slope_plot(15,2)-2.5 slope_plot(20,2)-3 slope_plot(29,2)-2 slope_plot(32,2) slope_plot(34,2)-2];
y=[slope_plot(1,3)+1 slope_plot(4,3)+1 slope_plot(5,3)+1 slope_plot(11,3) slope_plot(12,3)  slope_plot(15,3) slope_plot(20,3) slope_plot(29,3)+1.5 slope_plot(32,3) slope_plot(34,3)+1];
text(x,y,{'1','4','5','11','12','15','20','29','32','34'},'Color',[.2 .2 .2],'FontSize',9,'fontname','times new roman')
xlim([104.7 128])
ylim([19.7 43])
yticks([])
xticks([])
set(gca,'color','none');
set(gca,'linewidth',0.5,'xcolor',[.8 .8 .8],'ycolor',[.8 .8 .8])
print('-djpeg','-r300','fig5.jpg')

参考文献:
Liu, S., Hu, Z., Grandjean, T.J.et al.Dynamics and drivers of tidal flat morphology in China.Nat Commun16, 2153 (2025). https://doi.org/10.1038/s41467-025-57525-y

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

飞帆控件:在编辑模式下额外加载的库

飞帆是一个自由的控件设计平台。在飞帆中&#xff0c;我们可以很方便地创建基于 Vue 2 组件的控件&#xff0c;并使用控件来搭建网页。 他山之石&#xff0c;可以攻玉。在创建控件中&#xff0c;使用 js 、css 依赖库能让我们的控件更强大。 有些时候&#xff0c;在编辑模式下…

Super-Vlan和MUX-Vlan的原理、配置、区别

Super-Vlan 原理 Super-Vlan也叫Aggregate-Vlan。 一般的三层交换机中&#xff0c;通常是采用一个VLAN对应一个vlanif接口的方式实现广播域之间的互通&#xff0c;这在某些情况下导致了IP地址的浪费。因为一个VLAN对应的子网中&#xff0c;子网号、子网定向广播地址、子网缺…

el-table怎么显示 特殊单元格的值

1. 在 el-table-column 上绑定了 formatter 方法 formatEntityName &#xff0c;它会对每一行该列的数据&#xff08; cellValue &#xff09;进行处理。 2. 在 formatEntityName 方法中&#xff0c;尝试对传入的 cellValue 进行 JSON.parse 操作&#xff0c;并根…

2025-04-23 Python深度学习3——Tensor

文章目录 1 张量1.1 数学定义1.2 PyTorch中的张量 2 创建 Tensor2.1 直接创建**torch.tensor()****torch.from_numpy()** 2.2 依据数值创建**torch.zeros() / torch.zeros_like()****torch.ones() / torch.ones_like()****torch.full() / torch.full_like()****torch.arange() …

在统信UOS/麒麟Kylin OS操作系统中配置APT和GIT代理

在统信UOS/麒麟Kylin OS操作系统中配置APT和GIT代理 在内网环境中&#xff0c;直接访问外部资源可能会受到限制&#xff0c;这时候配置APT和GIT的代理就显得尤为重要。本文将详细介绍如何在统信UOS和麒麟Kylin OS操作系统中配置APT和GIT的代理。 为什么需要配置APT和GIT代理&…

第十七讲、Isaaclab中使用操作空间控制器

0 前言 官方教程&#xff1a;https://isaac-sim.github.io/IsaacLab/main/source/tutorials/05_controllers/run_osc.html IsaacsimIsaaclab安装&#xff1a;https://blog.csdn.net/m0_47719040/article/details/146389391?spm1001.2014.3001.5502 有时候&#xff0c;仅使用…

基于SpringBoot的校园二手商品在线交易系统+含项目运行说明文档

基于SpringBoot的校园二手商品在线交易系统含项目运行说明文档 专注校园二手交易平台是一个基于Java的在线市场&#xff0c;专为学生设计&#xff0c;便于买卖二手商品。平台提供全面的用户管理功能&#xff0c;包括学生、管理员和二手商品卖家账户管理。商品管理功能允许用户…

详解springcloud gateway工作原理、断言、filter、uri、id、全局跨域、globalfilter等以及关键源码实现

1.gateway概念 网关就是当前微服务项目的"统一入口"程序中的网关就是当前微服务项目对外界开放的统一入口所有外界的请求都需要先经过网关才能访问到我们的程序提供了统一入口之后,方便对所有请求进行统一的检查和管理 2. 网关的主要功能 将所有请求统一经过网关网…

C++面向对象特性之继承篇

C语音是面向过程的语言&#xff0c;而C在其之上多了面向对象的特性&#xff0c;面向对象三大特性:封装性、继承性、多态性。今天主包来讲讲自己学到的关于C继承特性的知识。 一、继承是什么 继承是提高代码复用的一种重要手段。正如C的模版、泛型编程等等都是为了实现代码复用…

【AI News | 20250423】每日AI进展

AI Repos 1、suna Suna是一款完全开源的AI助手&#xff0c;旨在通过自然对话帮助用户轻松完成现实世界的任务。它作为您的数字伙伴&#xff0c;提供研究、数据分析和日常问题解决等功能&#xff0c;并结合强大的能力与直观的界面&#xff0c;理解您的需求并交付成果。Suna的工…

【学习准备】算法和开发知识大纲

1 缘起 今年&#xff08;2025年&#xff09;的职业升级结果&#xff1a;不通过。没办法升职加薪了。 需要开始完善学习&#xff0c;以应对不同的发展趋势&#xff0c;为了督促自己学习&#xff0c;梳理出相关学习大纲。 分为算法和开发两部分。 算法&#xff0c;包括基础算法和…

第七篇:linux之基本权限、进程管理、系统服务

第七篇&#xff1a;linux之基本权限、进程管理、系统服务 文章目录 第七篇&#xff1a;linux之基本权限、进程管理、系统服务一、基本权限1、什么是权限&#xff1f;2、为什么要有权限&#xff1f;3、权限与用户之间的关系&#xff1f;4、权限对应的数字含义5、使用chmod设定权…

爬虫案例-爬取某企数据

文章目录 1、准备要爬取企业名称数据表2、爬取代码3、查看效果 1、准备要爬取企业名称数据表 企业名称绍兴市袍江王新国家庭农场绍兴市郑杜粮油专业合作社绍兴市越城区兴华家庭农场绍兴市越城区锐意家庭农场绍兴市越城区青甸畈家庭农场绍兴市袍江王新国家庭农场绍兴市袍江月明…

学习笔记—C++—string(一)

目录 string 为什么学习string的类 string类的常用接口 string类对象的常见构造 string类对象的访问及遍历操作 operator[] 迭代器 范围for auto 迭代器&#xff08;二&#xff09; string类对象的容量操作 size,length,max_size,capacity,clear基本用法 reserve 提…

GPLT-2025年第十届团体程序设计天梯赛总决赛题解(共计266分)

今天偶然发现天梯赛的代码还保存着&#xff0c;于是决定写下这篇题解&#xff0c;也算是复盘一下了 L1本来是打算写的稳妥点&#xff0c;最后在L1-6又想省时间&#xff0c;又忘记了insert&#xff0c;replace这些方法怎么用&#xff0c;也不想花时间写一个文件测试&#xff0c…

MySQL数据库精研之旅第十期:打造高效联合查询的实战宝典(一)

专栏&#xff1a;MySQL数据库成长记 个人主页&#xff1a;手握风云 目录 一、简介 1.1. 为什么要使用联合查询 1.2. 多表联合查询时的计算 1.3. 示例 二、内连接 2.1. 语法 2.2. 示例 三、外连接 4.1. 语法 4.2. 示例 一、简介 1.1. 为什么要使用联合查询 一次查询需…

15.FineReport动态展示需要的列

1.首先连接自带的sqlite数据库&#xff0c;具体方法参考下面的链接 点击查看连接sqlite数据库 2.文件 – 新建普通报表 3.新建数据库查询 4.查询自带的销售明细表 5.把数据添加到格子中&#xff0c;并设置边框颜色等格式 6.查询新的数据集&#xff1a;column 7.点笔 8.全部添…

Windows云主机远程连接提示“出现了内部错误”

今天有人反馈说有个服务器突然连不上了&#xff0c;让我看下什么问题&#xff0c;我根据他给的账号密码试了下发现提示“出现了内部错误”&#xff0c;然后就是一通排查 先是查看安全组&#xff0c;没发现特别的问题&#xff0c;因为也没有调过这块的配置 然后通过控制台登录进…

最新扣子(Coze)案例教程:Excel数据生成统计图表,自动清洗数据+转换可视化图表+零代码,完全免费教程

大家好&#xff0c;我是斜杠君。 知识星球群有同学和我说每天的工作涉及很多数据表的重复操作&#xff0c;想学习Excel数据表通过大模型自动转数据图片的功能。 今天斜杠君就带大家一起搭建一个智能体&#xff0c;以一个销售行业数据为例&#xff0c;可以快速实现自动清洗Exc…

如何安装Visio(win10)

首先下载下面这些文件 HomeStudent2021Retail.img officedeploymenttool_17531-20046.exe office中文语言包.exe 确保这些文件都在一个文件夹内&#xff08;我已经上传这些资源&#xff0c;这些资源都是官网下载的&#xff09; 官网资源下载教程 1.下载Office镜像&#xff0…