<写在前面>
关于台风轨迹图,这次由于作业需要就画了一幅轨迹图,参考原图选自论文:

LIU Zenghong, XU Jianping, SUN Chaohui, WU Xiaofen. An upper ocean response to Typhoon Bolaven analyzed with Argo profiling floats [J]. Acta Oceanol. Sin., 2014, 33(11), 90–101

大家有兴趣可以自行查找论文进行阅读,本文所绘制台风轨迹图选取论文中的Bolaven(1215号)台风,台风数据采自JMA(由于本人还在学习中,论文中Unisys weather information system尚不会使用,望了解unisys weather的伙伴有时间可以指导,在此感谢>-<),argo浮标数据则主要来源于中国Argo实时资料中心的相关数据;
如有错误还望批评指正!


<图像一览>


1 关于台风轨迹绘制

台风轨迹的绘制可以通过m_patch或者m_line等命令进行绘制;

1.1 m_patch

以下是m_patch绘制的简单示范图:

在使用m_patch的时候需要注意lat的最后一个值需要是NaN,不然得到的图像将会是一片阴影覆盖部分

m_proj('mercator','lat',[15,30],'lon',[120,150]);
m_coast('patch',[.7 .7 .7],'edgecolor','none');
m_grid('linestyle',':','box','fancy','tickdir','out','linecolor','w',...
'alpah','0.5','ytick',[15:5:30],'xtick',[120:5:150]);
lat(end)=NaN; %就是这句,一定要设置NaN,否则图像是面,而非线!
m_patch(lontc,lattc,'k');

在patch命令中可以直接设置线条为渐变颜色,但是在m_patch中,可能是由于命令要求不同,在mmap文件m_patch.m中注释要求颜色设置需要是字符或者1x3 RGB数组,因此个人在设置渐变时失败,大家也可以各自尝试一下,共享经验!
命令行输入openExample(‘graphics/CreateMulticoloredLineExample’)就可以调用运行matlab中patch设置渐变线条的示例,以下是示例结果:

1.2 m_line

最后在<图像一览>中呈现的图就是用m_line绘制的了,这里需要注意的是,m_line是绘制线条,两点确定一条直线,本人一开始没有意识到这一点,最后得到的结果不连续。

f1 = figure(1);
m_proj('mercator','lat',[15,30],'lon',[120,150]);
m_coast('patch',[.7 .7 .7],'edgecolor','none');
m_grid('linestyle',':','box','fancy','tickdir','out','linecolor','w',...
'alpah','0.5','ytick',[15:5:30],'xtick',[120:5:150]); colormap(m_colmap('jet',41));
colorbar;
caxis([15,55]);
cmap = colormap(f1); n = length(lontc);
for i = 1:n
if (isnan(ws(i))==1)
ci = cmap(1,:);
else
ci = cmap(ws(i)-14,:);
end hold on
if (i == 1)
m_line(lontc(1:2),lattc(1:2),'Color',ci,'linewidth',4);
else
m_line(lontc(i-1:i),lattc(i-1:i),'Color',ci,'linewidth',4);
end
end
....然后是一些图像注释等代码(此处省略)

这里大致分析一下代码内容:

  1. m_proj,coast,grid进行基本投影海岸等设置
  2. 选取想要应用的colorbar并设置想要的范围并返回得相应的cmap,这里要注意,本人在设置时候colormap(m_colmap(‘jet’,41)),这样得到的cmap恰好是41x3 RGB矩阵,恰好caxis为[15,55],并以1为步长时的数组大小为41,这样从15到55,方便每个整数对应一个1x3 RGB矩阵
  3. ci就是根据具体风速所提取的RGB矩阵,再通过for循环,对m_line进行拼接,这里m_line每两点画一个,颜色ci为相应速度大小在colorbar中对应的RGB,然后画n次
  4. 注意事项:m_line需要是两点才能防止间断,ci是相应最大风速大小根据colorbar返回的颜色

2 关于argo位置的标记

argo位置标记直接使用m_plot即可,此处不作赘述

3 关于colbar颜色返回值

在1.2中有应用到colorbar某特定数值的RGB返回,这里再次进行总结

  1. colormap jet(n),表示设置颜色数为n,类型为jet的colormap,该colormap是由nx3的RGB矩阵构成的,jet可以替换成自己喜欢的colormap类型
  2. cmap = colormap;可以返回该colormap的cmap值,若有多个坐标区域,注意要标明在哪个坐标区域
  3. caxis可以设置colorbar对应的燕娥范围,如<图像一览>中采用的是15~55,那对应1中n的设置最好是(55-15+1)的整倍数
  4. 根据相应的大小提取RGB数组,如要选择风速为20时候colorbar对应的RGB数组,ci=cmap((20-14),:)
  5. 通用公式:已设置colormap颜色数n,caxis范围[a1,a2],当数值为A时的RGB为:ci=cmap((A-a1+1)*(n/(a2-a1+1)),:)

-------**注意上述通用公式只是一个总结,不一定完全适用于所有的情况,在使用过程中要抓住两个要点,① colormap不是完全连续的,colormap(n),是把颜色谱分成n段;②提取colormap后,根据自己的选出的值会落在那个段中决定,然后选择相应的顺序。**[修正于2019/04/29]

matlab画台风轨迹图小tip的更多相关文章

  1. matlab 画二维图与三维图

    二维图 ezplot('sin(x)');%默认范围 ezplot('sin(x)',[-4 4]);%自己设定范围 三维图 ezmesh('x*x+y*y');%默认范围

  2. matlab画甘特图

    近期为发小论文一直在研究作业调度问题,好不easy把数据搞出来了,结果又被画甘特图给难住了,查了各种资料.anygantt,highchart.Jfree chart等都试了,效果都不咋好.无意中留意 ...

  3. 用matlab画两个曲面的图

    求助!!用matlab画两个曲面的图 这是我写的程序,但是运行不出来,麻烦帮我修改一下,谢谢!!clearallcloseall[x,y]=meshgrid(0:.1:60);z1=(25*y-25* ...

  4. 使用Java、Matlab画多边形闭合折线图

    由于写论文要将“哈密顿回路问题(TSP)”的求解中间结果表示出来,查了一下使用程序画多边形图形.现在在总结一下,这个图是“由给定节点首尾相连的”闭合多边形. 1.使用matlab作闭合多边形图 没有找 ...

  5. Matlab plotyy画双纵坐标图实例

    Matlab plotyy画双纵坐标图实例 x = 0:0.01:20;y1 = 200*exp(-0.05*x).*sin(x);y2 = 0.8*exp(-0.5*x).*sin(10*x);[A ...

  6. Matlab——图形绘制——三维立体图形 剔透玲珑球 动态图——彗星状轨迹图

    三维绘图函数 三维绘制工具 函数view 实例:三维螺旋线 >> t=:pi/:*pi; plot3(sin(t),cos(t),t) grid %添加网格  plot3可以画出空间中的曲 ...

  7. matlab画柱状图

    论文中需要画图进行比较,感觉还是matlab画起来比较方便,先把自己画的图及matlab代码放上. y=[300 311;390 425; 312 321; 250 185; 550 535; 420 ...

  8. matlab画图形函数 semilogx

    matlab画图形函数 semilogx loglog 主要是学习semilogx函数,其中常用的是semilogy函数,即后标为x的是在x轴取对数,为y的是y轴坐标取对数.loglog是x y轴都取 ...

  9. 使用python绘制根轨迹图

    最近在学自动控制原理,发现根轨迹这一张全是绘图的,然而书上教的全是使用matlab进行计算机辅助绘图.但国内对于使用python进行这种绘图的资料基本没有,后来发现python-control包已经将 ...

随机推荐

  1. Struts2 action 跳转到web-inf下,

    初学,这个问题困扰了1天.刚开始以为代码或者是配置文件哪里写错了,仔细检查了好几遍确定代码没有错,实在没办法了,准备发帖求助.就在我截图的时候,突然发现我的@Action中有点别扭,即使他没有报错. ...

  2. iOS TabelViewCell 删除 编辑 插入

    /** TableView 进入或退出编辑状态(TableView 方法). */ - (void)setEditing:(BOOL)editing animated:(BOOL)animate{ / ...

  3. 不使用循环或递归判断一个数是否为3的幂(leetcode 326)

    326. Power of ThreeGiven an integer, write a function to determine if it is a power of three. Follow ...

  4. React生命周期简单详细理解

    前言 学习React,生命周期很重要,我们了解完生命周期的各个组件,对写高性能组件会有很大的帮助. Ract生命周期 React 生命周期分为三种状态 1. 初始化 2.更新 3.销毁 初始化 1.g ...

  5. 工具提高效率 - iterm2

    快捷键 command + d, command + shift +d 显示所有记录 ITERM默认设置了终端能保留的历史输出行数,在进行调试时特别不方便,一旦输出过多就无法看到完整的历史记录. 在P ...

  6. Python全栈之路----常用模块----软件开发目录规范

    目录基本内容 log  #日志目录 conf  #配置目录 core/luffycity  #程序核心代码目录  #luffycity 是项目名,建议用小写 libs/modules  #内置模块 d ...

  7. 安装并激活pycharm

    进入 pycharm官网 https://www.jetbrains.com/pycharm/ 或直接百度pycharm进入官网 点击download now 下载专业版: 点击保存文件: 双击 py ...

  8. spring AOP知识点总结以及日志的输出

    AOP的作用就是在基于OCP在不改变原有系统核心业务代码的基础上动态添加一些扩展功能.通常应用于日志的处理,事务处理,权限处理,缓存处理等等 首先,使用AOP需要添加的依赖有:spring-conte ...

  9. js中日期格式与时间戳格式互换

    2014-04-23 18:55:49:123    日期格式 1398250549123        时间戳格式 前台显示日期格式,则 function tsToTime(ts) { var da ...

  10. 关于修改banner信息;nginx反向代理apache应用

    本周实验 1. Linux下Apache部署一个php页面,返回http数据包中查看server信息,修改Apache 配置使server banner自定义. 2. nginx设置反向代理,代理上面 ...