|||
主修物理海洋学,有变量空间场的画图需求,这是遇到的一些细节问题,部分灵感来自于网络。
本人在画陆地数据加温盐场的图时,需要调用两个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
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-22 19:24
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社