matlab畫台風軌跡圖小tip


 

<寫在前面>
關於台風軌跡圖,這次由於作業需要就畫了一幅軌跡圖,參考原圖選自論文:

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設置漸變線條的示例,以下是示例結果:
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]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM