欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab如何画图时去掉陆地点,科学网—Matlab m_map一张地图上使用用多个colormap以及patch精细岸线数据去除河流 - 肖鑫的博文...

发布时间:2025/3/20 循环神经网络 53 豆豆
生活随笔 收集整理的这篇文章主要介绍了 matlab如何画图时去掉陆地点,科学网—Matlab m_map一张地图上使用用多个colormap以及patch精细岸线数据去除河流 - 肖鑫的博文... 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

主修物理海洋学,有变量空间场的画图需求,这是遇到的一些细节问题,部分灵感来自于网络。

本人在画陆地数据加温盐场的图时,需要调用两个colormap,这有很多种解决办法;

普通的2014b以后的版本来讲,对于一个ax1 = axes(),ax2 = axes();

两个坐标轴上的绘图可以直接用colormap(ax1,'jet') colormap(ax2,'gray')来控制;

但是遇到和m_map工具包加上了m_grid之后坐标轴问题就会比较麻烦;

本人当成一个黑箱在用,并不想去读并改其源代码,所尝试的可行的有两种:两幅图拼接成一个colorbar,实际上就是拼接成一个colormap,实现起来太麻烦了

第二种利用一个大佬John Iversen写的FreezeColors程序包,上传到了matlab官方,以下是一个例子

上面两幅图分别是只画了陆地高程和海表温度,图很丑只做例子凑合看。部分画图代码如下

figure,hold on

m_proj('Miller','lon',[lonlim1 lonlim2],'lat',[latlim1 latlim2])

m_contourf(x,y,z',[0:100:8000],'linestyle','none','levelstep',.1);% 陆地高程

m_grid('box','fancy','xtick',[0:5:180],'ytick',[0:5:90],'linestyle','none',...

'linewidth',0.5,'backcolor','none');

colormap([m_colmap('gland',80)]);

caxis([0 8000])

colorbar

figure,hold on

m_proj('Miller','lon',[lonlim1 lonlim2],'lat',[latlim1 latlim2])

m_contourf(lon,lat,sst','linestyle','none','levelstep',.1);% 海表温度

m_grid('box','fancy','xtick',[0:5:180],'ytick',[0:5:90],'linestyle','none',...

'linewidth',0.5,'backcolor','none');

colormap('jet');

caxis([28 31])

colorbar

把两个图凑到一起该咋办,利用FreezeColors加在哪个位置坐标轴怎么设置都不行,很绝望

查了之前画的一个图,此图是水深m_pcolor与散点m_scatter画的

突然想到会不会是不能用同一个画图命令m_contourf的原因

单独修正陆地高程或两个绘图为m_pcolor就可以了,单修正海表温度为pcolor就不行

怀疑是contourf的问题

figure,hold on

m_proj('Miller','lon',[lonlim1 lonlim2],'lat',[latlim1 latlim2])

pc = m_pcolor(x,y,z');% 陆地高程

set(pc,'linestyle','none');

m_grid('box','fancy','xtick',[0:5:180],'ytick',[0:5:90],'linestyle','none',...

'linewidth',0.5,'backcolor','none');

colormap([m_colmap('gland',80)]);freezeColors

caxis([0 8000])

% m_contourf(lon,lat,sst','linestyle','none','levelstep',.1);

pc = m_pcolor(lon,lat,sst');% 海表温度

set(pc,'linestyle','none');

colormap('jet');

caxis([28 31])

colorbar

代码如上,图片如下,但是这幅图太丑了,决定不用陆地高程了

老老实实在加精细岸线的时候之前未解决的一个问题突然想去解决下,陆地上的河流湖泊看起来很丑

搞了半天,之前博文里提到了如何添加国界线,利用里面一行命令加岸线就能去掉了

代码和图:

figure,hold on

m_proj('Miller','lon',[lonlim1 lonlim2],'lat',[latlim1 latlim2])

% m_gshhs_l('patch',[0.7 0.7 0.7],'Edgecolor','none');% 只加这行会有河流对应左图

m_gshhs('lc1','patch',[0.7 0.7 0.7],'Edgecolor','k');% 只加这行没有河流对应右图

m_grid('box','fancy','xtick',[0:10:180],'ytick',[0:10:90],'linestyle','none',...

'linewidth',0.5,'backcolor','none');

m_contourf(lon,lat,sst','linestyle','none','levelstep',.1);

colormap('jet');

caxis([28 31])

colorbar

转载本文请联系原作者获取授权,同时请注明本文来自肖鑫科学网博客。

链接地址:http://blog.sciencenet.cn/blog-3386114-1209501.html

上一篇:Matlab 利用新建坐标轴绘制多列legend

下一篇:Dynamical Normalized Seasonality in Matlab

总结

以上是生活随笔为你收集整理的matlab如何画图时去掉陆地点,科学网—Matlab m_map一张地图上使用用多个colormap以及patch精细岸线数据去除河流 - 肖鑫的博文...的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。