blazing216的个人博客分享 http://blog.sciencenet.cn/u/blazing216

博文

在Matlab中调用GMT画图

已有 8800 次阅读 2014-12-13 22:41 |个人分类:GMT|系统分类:科研笔记| GMT

GMT(Generic Mapping Tools)是由Paul Wessel和Walter Smith开发的一款开源的绘图软件。它使用命令行生成ps或者eps文件。GMT的常用命令包括psbasemap,psxy,grdimage,pstext等,可以在linux和Windows下使用。Matlab是MathWorks开发的数学软件,使用以矩阵作为基本数据类型,集算法开发、数值计算和数据可视化为一体的高级语言。使用Matlab可以方便地处理数据,文件等,也可以画图,但是Matlab生成的图不是很美观,通常需要进一步的修饰。而GMT可以绘制高质量的图件,但是需要事先生成所需的文件。

为了解决这一问题,我们在Windows使用Matlab将GMT画图的命令写入一个批处理文件中,然后使用Matlab的system命令运行该批处理文件,生成.ps文件。然后可以用system命令调用ghostview等软件打开.ps文件,查看绘制结果。

这是我使用Matlab生成批处理文件的第一段。

% write .bat file for GMT

batfile = 'Fig4_Matlab_GMT.bat';

epsfile = 'Fig4_Matlab_GMT.ps';

fid = fopen(batfile,'w');

fprintf(fid, [ ...

   '@echo offrn', ...

   'set file1=Ricker.datrn', ...

   'set file2=RickerDeriv.datrn', ...

   'set file3=ur000000.1_00001000_00000030.datrn', ...

   'set tfile3=theo_ur000000.1_00001000_00000030.datrn', ...

   'set ps=%srnrn', ...

   'gmt set MAP_FRAME_PEN thinrn', ...

   'gmt set MAP_TITLE_OFFSET 8p MAP_LABEL_OFFSET 8prn', ...

   'gmt set FONT_ANNOT_PRIMARY 12p FONT_TITLE 12p FONT_LABEL 12prn', ...

   'gmt set PS_CHAR_ENCODING Standard+rnrn', ...

   'set pat=0.4821rn'

   ], epsfile);

这是最后一段

fprintf(fid,[ ...

   'echo :convert to epsrn' ...

   'gmt ps2raster -Te -P %%ps%%rn' ...

   ]);

fprintf(fid,'del gmt.*rn');

fclose(fid);

system(batfile); % 运行Fig4_Matlab_GMT.bat

system(['gsview32 ', epsfile, '&']); % 调用gsview32打开Fig4_Matlab_GMT.ps

注:对于fprintf函数来说,%%->%,rn->回车,\->


使用Matlab生成批处理文件的好处是:

(1)方便使用%f或%e设置GMT命令需要的参数;

(2)随时使用dlmwrite或csvwrite等命令生成GMT需要的临时性文件,弥补Windows下echo命令的不足;

(3)实现运行批处理文件和查看ps文件的自动化。


目前存在的问题,GMT命令错误的提示没有显示在Matlab中,不能直接地检验GMT命令执行是否有误。Matlab向文件输出的命令略微有些繁琐。不过瑕不掩瑜,在Matlab中调用GMT画图仍是一个很好的方法。







https://blog.sciencenet.cn/blog-725052-850807.html

上一篇:与拖延症的战斗(2)——了解我们的“时间”
下一篇:世界的方向掌握在少数“疯子”手中
收藏 IP: 159.226.119.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-7-28 06:42

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部