c++输入坐标画散点图_Generic Mapping Tools (GMT) 实际使用心得和随笔(1):散点图...

本文介绍了如何使用Generic Mapping Tools(GMT)在C++中输入坐标来绘制散点图。GMT是一个强大的科学绘图工具,尽管没有图形用户界面,但可以通过编写批处理脚本来高效生成专业图表。文中详细展示了从安装到编写bash脚本的全过程,包括设置、散点图绘制、颜色映射、子图创建和颜色条等,以及最终的格式转换。
摘要由CSDN通过智能技术生成

1c220333c66c71bed227b8b008365c9e.png

Generic Mapping Tools(GMT)是科研工作者常用的画图工具。GMT的功能强大,也内置了一些统计模块。相较于其他常用的绘图工具(或含有绘图功能的软件,比如Matlab,Python,R等),GMT的特点是高效出图,缺点则是没有可操作的直观界面(GUI)。

我这系列的文章奔着“开袋即食”的理念,直接从实例入手。部分GMT4,5和6的区别,我也会提到。提前说明,文章中,我只会针对实例给出代码,至于如何举一反三,请各位同学自行根据GMT手册研究。

序言:GMT的使用环境

(1)安装

我个人是使用mac作为工作电脑环境,因此安装GMT可以用homebrew、macport等工具简单地进行安装。在终端里输入:

brew install gmt 

brew install gmt@5 

注意homebrew里的GMT包是GMT6的版本。如果要安装GMT5版本,需使用第二条命令。

(2)使用

通常,GMT的代码都需要写在bash之类的批处理用文档里。

比如,本次实例所用代码都可以写入plscatter.sh这样的文件里,然后通过以下命令执行。

sh plscatter.sh

正文:(1)散点图(Scatter Plot)+拟合 —— 此为GMT5版

先上效果图(数据是我随手选的)。

be6472cb62790387a9d9305889792507.png
图1 含有两个子图和拟合直线的散点图

这张图上,包含了大部分GMT画散点图所需要用到内容:

  1. 绘制子图
  2. 根据数据绘制点并着色。
  3. 绘制颜色尺度
  4. 添加不同字体、颜色的文本和绘制文本框
  5. 上下标等小功能

伸手党可以直接复制走。如果想学习,则可以继续往后看。

#!/bin/bash
# Description: A sample for GMT.
# Author: Zhihu Gadian
#
# output in English
export LANG=C
#########  Personal Settings
#  . ./gmtpar.sh     调用公共设置中,以下为gmtpar.sh的内容。
gmt set PROJ_LENGTH_UNIT INCH
gmt set FONT_TITLE 20
gmt set FONT_ANNOT_PRIMARY 14
gmt set FONT_LABEL 16
gmt set MAP_TICK_PEN thin
gmt set MAP_FRAME_TYPE plain
gmt set MAP_FRAME_PEN thicker
gmt set PS_MEDIA a4
##########  End Personal Settings

range=1800/2400/1800/2400
cptfile=compare.cpt
size=2.8
xanot=a200f100g300
yanot=a200f100g300

in=sample.txt
out=sample.ps

gmt makecpt -Cseis -T0/60/2 -D  -I > $cptfile

########panel 1
gmt psbasemap -R${
    range} -JX${
    size} -B${
    xanot}:"Sample 1 Obs. [m@+2@+]":/${
    yanot}:"Sample 1 Model [m@+2@+]":WSne -X1  -K >  $out
awk  '{if ( $1 != "#" && $2 > -900. && $4 > -900. ) print $2,$4,$1}' $in|
gmt psxy -R -J  -Sc0.04 -C$cptfile -O -K >> $out

awk  '{if ( $1 != "#" && $2 > -900. && $4 > -900. ) print $2,$4}' $in|
gmt regress -Fxm  -T1700/2500/1 > sample1_regress
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值