matlab如何画图时去掉陆地点,科学网—Matlab m_map一张地图上使用用多个colormap以及patch精细岸线数据去除河流 - 肖鑫的博文...
主修物理海洋學(xué),有變量空間場的畫圖需求,這是遇到的一些細節(jié)問題,部分靈感來自于網(wǎng)絡(luò)。
本人在畫陸地數(shù)據(jù)加溫鹽場的圖時,需要調(diào)用兩個colormap,這有很多種解決辦法;
普通的2014b以后的版本來講,對于一個ax1 = axes(),ax2 = axes();
兩個坐標軸上的繪圖可以直接用colormap(ax1,'jet') colormap(ax2,'gray')來控制;
但是遇到和m_map工具包加上了m_grid之后坐標軸問題就會比較麻煩;
本人當(dāng)成一個黑箱在用,并不想去讀并改其源代碼,所嘗試的可行的有兩種:兩幅圖拼接成一個colorbar,實際上就是拼接成一個colormap,實現(xiàn)起來太麻煩了
第二種利用一個大佬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加在哪個位置坐標軸怎么設(shè)置都不行,很絕望
查了之前畫的一個圖,此圖是水深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');% 只加這行會有河流對應(yīng)左圖
m_gshhs('lc1','patch',[0.7 0.7 0.7],'Edgecolor','k');% 只加這行沒有河流對應(yīng)右圖
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
轉(zhuǎn)載本文請聯(lián)系原作者獲取授權(quán),同時請注明本文來自肖鑫科學(xué)網(wǎng)博客。
鏈接地址:http://blog.sciencenet.cn/blog-3386114-1209501.html
上一篇:Matlab 利用新建坐標軸繪制多列l(wèi)egend
下一篇:Dynamical Normalized Seasonality in Matlab
總結(jié)
以上是生活随笔為你收集整理的matlab如何画图时去掉陆地点,科学网—Matlab m_map一张地图上使用用多个colormap以及patch精细岸线数据去除河流 - 肖鑫的博文...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shiro+php,一套基于Spring
- 下一篇: fullbnt matlab,FullB