GMT 全称是 Generiac Mapping Tools,是非常好用的地理科学制图软件之一。之前都是用 MATLAB 制图,但地理制图感觉不太规范,投影的支持也少;后来使用 QGIS 进行制图,但是和代码结合起来比较困难。而 julia 语言可以比较方便的调用外部语言和程序,运算速度也很快,所以就进行了学习,准备以后将数据的可视化工作都用 julia 来实现。
GMT源程序的中文的官方翻译:简介 — GMT 中文手册 (gmt-china.org)
GMT.jl 的参考手册:Index · GMT (generic-mapping-tools.org)
我们可以使用 makecpt 绘制线性的颜色图,也可以用 grd2cpt 绘制 equal count 的颜色图。但有时候我们拿到的是向量数据,不是栅格数据 (grid),这时候想要得到 equal count 的颜色图就需要转换成矩阵才行。
equal count 是按照频度分布,使得不同颜色范围内的数据量相同,是 QGIS 中常用的一种设置颜色图的方法。
问题在于,直接将向量转化成一维栅格是无效的,得到的颜色图还是一个均匀线性
xxxxxxxxxx121# 错误代码2using GMT3# 输入变量,在 [0, 0.2] 之间密集分布4X = [0, 0.1 , 0.12 , 0.13, 0.5, 0.9]5# 转换成一维栅格6Y = GMT.mat2grid(X)7# 得到颜色图8Cpt = GMT.grd2cpt(Y)9GMT.colorbar(10 C = Cpt,11 show = true12)解决这个问题也很简单,转化成二维栅格就可以。
xxxxxxxxxx71# 使用 reshape 函数转化成 2维矩阵2Y2 = GMT.mat2grid(reshape(X,2,:))3Cpt = GMT.grd2cpt(Y2)4GMT.colorbar(5 C = Cpt,6 show = true7)在 GMT 中,默认的小数点是12位的,对于制图来说未免也太多了,我们需要修改 gmt.conf 来实现。可以用 GMT 的命令做到。
xxxxxxxxxx21# 设置 colorbar 上坐标的小数点位数2GMT.gmt("set FORMAT_FLOAT_MAP %.2f")我试过用 gmtset ,但总是会报错。