ds整理的greg教程
GREG 是 GILDAS 软件套件中的通用绘图程序,用于创建出版级的天文数据可视化,包括一维曲线、二维灰度图和等高线图。本教程基于 GILDAS 官方文档整理。
📖 目录
-
GREG 概述与启动
-
基础命令与语法
-
坐标系统与视图设置
-
一维数据绘图
-
二维图像与等高线
-
图形标注与修饰
-
颜色与灰度图
-
多边形工具
-
高级功能
-
脚本与批处理
-
完整工作流程示例
-
命令速查表
1. GREG 概述与启动
1.1 什么是 GREG?
GREG 是 GILDAS 的图形引擎,提供:
-
一维曲线绘图(光谱、光变曲线)
-
二维灰度图与等高线图
-
多种坐标投影(赤道、银道、AITOFF 等)
-
出版级标注与输出
1.2 启动与退出
# 启动 GREG
$ greg
# 启动后显示提示符
GreG>
# 退出
GreG> exit
# 或按 Ctrl+D
1.3 获取帮助
# 查看所有命令
GreG> help
# 查看特定命令帮助
GreG> help plot
GreG> help rgmap
# 查看命令详细说明
GreG> doc rgmap
2. 基础命令与语法
2.1 命令结构
GREG 命令遵循 SIC 语法:
-
位置参数:按顺序提供
-
选项:以
/开头,可带参数 -
参数与选项用空格分隔
# 语法示例
GreG> COMMAND arg1 arg2 /OPTION1 value1 /OPTION2
2.2 设备设置
# 设置输出设备
GreG> device xwin # 显示在屏幕(X Window)
GreG> device ps # 输出 PostScript
GreG> device ps output.ps # 指定输出文件名
# 查看当前设备
GreG> show device
2.3 清除图形
# 清除当前图形
GreG> clear
# 清除特定段
GreG> clear segment
3. 坐标系统与视图设置
3.1 设置坐标轴
# 手动设置坐标范围
GreG> limits xmin xmax ymin ymax
# 自动设置范围
GreG> limits
# 设置对数坐标
GreG> limits /xlog # X 轴对数
GreG> limits /ylog # Y 轴对数
# 设置坐标轴标签
GreG> label "Right Ascension (deg)" /x
GreG> label "Declination (deg)" /y
3.2 设置绘图框位置
# 设置绘图框在页面上的位置(厘米)
GreG> set box location x1 x2 y1 y2
# 自动匹配坐标范围
GreG> set box location match
3.3 投影与坐标系
GREG2 语言支持多种天文投影:
# 切换到 GREG2 语言
GreG> greg2
# 定义投影
GREG2> projection type aitoff # AITOFF 投影
GREG2> projection type mercator # 墨卡托投影
GREG2> projection type none # 无投影
# 设置坐标系
GREG2> set system equatorial # 赤道坐标
GREG2> set system galactic # 银道坐标
# 绘制网格
GREG2> grid 15 15 # 经纬度步长15度
GREG2> grid /alternate # 交替坐标系
4. 一维数据绘图
4.1 基本绘图命令
# 从文件读取数据并绘图
GreG> column /file data.dat
GreG> plot
# 指定列
GreG> column x 1 y 2 /file data.dat
GreG> plot
4.2 数据连接方式
# 点状图
GreG> points
# 连线图
GreG> connect
# 带误差棒
GreG> errorbar
# 柱状图
GreG> histogram
4.3 多数据叠加
# 第一组数据
GreG> column /file spec1.dat
GreG> plot
# 叠加第二组数据(不同颜色)
GreG> column /file spec2.dat
GreG> plot /over /colour
4.4 绘图样式控制
# 设置画笔
GreG> pencil 2 # 线宽2
GreG> pencil /dashed 3 # 虚线样式3
GreG> pencil /colour 2 # 颜色2
# 重置为默认
GreG> pencil /default
5. 二维图像与等高线
5.1 读取二维数据
# 读取 FITS 图像到 RG 数组
GREG2> rgdata image.fits
# 查看图像信息
GREG2> extrema # 显示最小/最大值
GREG2> limits /rgdata # 设置坐标范围
# 显示图像(灰度图)
GREG2> plot
5.2 等高线绘图
等高线绘图的标准流程:
# 1. 设置绘图框位置
GreG> set box location 2 18 2 12
# 2. 读取数据
GREG2> rgdata image.fits
# 3. 设置坐标范围
GREG2> limits /rgdata
# 4. 显示灰度图
GREG2> plot
# 5. 绘制坐标框
GreG> box
# 6. 设置等高线等级
GREG2> levels 0.1 to 0.9 by 0.1
# 7. 绘制等高线
GREG2> rgmap /percent 1 # 以峰值的百分比绘制
5.3 等高线等级设置
# 指定多个等级
GREG2> levels 0.1 0.2 0.3 0.4 0.5
# 使用范围
GREG2> levels 0 to 1 by 0.1
# 组合方式
GREG2> levels 0.1 0.2 to 0.8 by 0.2 0.9
# 显示当前等级
GREG2> levels
# 清除等级设置
GREG2> levels none
5.4 等高线样式
# 绘制所有等高线
GREG2> rgmap
# 仅绘制正等高线
GREG2> rgmap /only positive
# 仅绘制负等高线
GREG2> rgmap /only negative
# 带填充的等高线
GREG2> rgmap /grey colour 16 # 16级灰度填充
6. 图形标注与修饰
6.1 添加文本标签
# 基本文本(用户坐标)
GreG> draw text 10 20 "NGC 7027" 2
# 带边框
GreG> draw text 10 20 "NGC 7027" 2 /box 8
# 旋转文本
GreG> set orientation 90
GreG> draw text 1 0 "Declination" 5
GreG> set orientation 0
6.2 绘制图形元素
# 绘制矩形框
GreG> box
# 绘制轴线
GreG> rule
# 绘制刻度线
GreG> tickspace 1 10 1 10 # 设置大刻度和小刻度间距
6.3 坐标轴标签
# 设置标签
GreG> label "Velocity (km/s)" /x
GreG> label "Temperature (K)" /y
# 标签居中
GreG> label "Main Title" /center 2
# 追加标签
GreG> label " (LSRK)" /x /append
7. 颜色与灰度图
7.1 灰度图显示
使用 PLOT 命令生成灰度图:
# 基本灰度图
GREG2> plot
# 线性灰度拉伸
GREG2> plot /scaling linear low_cut high_cut
# 对数灰度拉伸
GREG2> plot /scaling logarithmic 0.01 100
# 设置空白值
GREG2> plot /blanking -999 0
7.2 完整灰度图示例
# 读取图像
GREG2> rgdata image.fits
# 设置坐标范围
GREG2> limits /rgdata
# 设置绘图框位置匹配坐标
GreG> set box location match
# 绘制灰度图
GREG2> plot
# 添加坐标框
GreG> box /absolute
# 添加标签
GreG> label "Right Ascension" /x
GreG> set orientation 90
GreG> draw text 1.000 0.000 "Declination" 5 /character 6
GreG> set orientation 0
# 添加标题
GreG> draw text 0.000 1.000 "Example of PLOT command" 2 /box 8
# 输出 PostScript
GreG> hardcopy figure.ps /device ps
7.3 颜色楔形图例
# 绘制颜色条
GREG2> wedge
# 自定义颜色条位置
GREG2> wedge /position x y
8. 多边形工具
POLYGON 命令用于定义多边形区域,供 MASK 和 MEAN 命令使用。
8.1 交互式定义多边形
# 进入交互式定义模式
GREG2> polygon
# 鼠标/键盘操作:
# - 左键/任意键:添加顶点
# - 中键/C:删除最后一个顶点
# - 右键/E:结束定义
# - Q:退出
8.2 从文件读取多边形
# 从文件读取顶点(X 列1,Y列2)
GREG2> polygon vertices.dat
# 查看当前多边形
GREG2> write polygon
8.3 多边形遮罩
# 遮罩多边形内部的像素
GREG2> mask in
# 遮罩多边形外部的像素
GREG2> mask out
# 指定空白值
GREG2> mask in /blanking -999
8.4 多边形内统计
# 计算多边形内像素的统计量
GREG2> mean
# 带 sigma 剔除
GREG2> mean /clip 3.0
# 查看结果(存储在 POLY%SUM 和 POLY%AREA)
GREG2> show poly
8.5 绘制多边形
# 仅绘制轮廓
GREG2> polygon /plot
# 填充颜色
GREG2> polygon /fill 5
# 填充阴影线
GREG2> polygon /hatch 3 45 0.25 0
# 组合使用
GREG2> polygon /fill 2 /plot
9. 高级功能
9.1 三维透视图
# 基本三维视图
GREG2> perspective 30 45
# 带线的三维视图
GREG2> perspective /lines
# 设置缩放因子
GREG2> perspective /factor 1.0 0.5
# 设置垂直范围
GREG2> perspective /vertical 0 100
9.2 椭圆绘制
# 绘制椭圆(半长轴、半短轴、位置角)
GREG2> ellipse 0.5 0.3 45
# 填充椭圆
GREG2> ellipse 0.5 0.3 45 /fill 3
# 绘制圆弧
GREG2> ellipse 0.5 0.3 45 /arc 0 180
# 在指定位置绘制
GREG2> ellipse 0.5 0.3 45 /user 10 20
9.3 图像重采样
# 重采样到新网格
GREG2> resample nx ny
# 重采样并平滑
GREG2> resample 256 256 /smooth
9.4 图像条带提取
# 提取一行数据
GREG2> strip x y
# 提取并保存
GREG2> strip x y /write strip.dat
9.5 坐标转换
# 转换坐标(从赤道到当前投影)
GREG2> convert ra dec
# 指定输入系统
GREG2> convert ra dec /system galactic
10. 脚本与批处理
10.1 创建脚本文件
创建 plot_contours.greg:
! 等高线绘图脚本
! 作者: 你的名字
! 设置设备
device xwin
! 读取图像
greg2
rgdata m31.fits
extrema
limits /rgdata
! 设置绘图框
greg1
set box location match
! 绘制灰度图
greg2
plot
! 绘制等高线
levels 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
rgmap /percent 1
! 添加标注
greg1
box
label "Right Ascension (deg)" /x
label "Declination (deg)" /y
draw text 0.5 1.05 "M31 CO Map" 2 /center
! 输出
hardcopy m31_map.ps /device ps
10.2 执行脚本
# 在 GREG 中执行
GreG> @plot_contours.greg
# 或在命令行执行
$ greg -p plot_contours.greg
10.3 变量与循环
! 批量处理多个文件
for i 1 to 10
greg2
rgdata image_$i.fits
greg1
set box location match
greg2
plot
greg1
box
hardcopy image_$i.ps
next
11. 完整工作流程示例
示例:处理并绘制 CO 谱线立方体的积分强度图
! 文件: co_mom0.greg
! 目的: 绘制 CO(2-1) 积分强度图
! === 初始化 ===
clear
device xwin
set echo on
! === 读取数据 ===
greg2
! 读取 FITS 立方体的第一个通道作为参考
rgdata co_cube.fits /subset 1 1 1 1
! 获取图像尺寸信息
extrema
limits /rgdata
! === 设置绘图框 ===
greg1
set box location 2 18 2 12
! === 读取并绘制积分强度图 ===
greg2
! 读取整个立方体(假设已积分)
rgdata co_mom0.fits
limits /rgdata
! 绘制灰度图
plot /scaling linear 0 50
! === 添加等高线 ===
! 设置等高线等级(峰值的百分比)
levels 10 20 30 40 50 60 70 80 90
rgmap /percent 1 /pens 1 1
! === 添加标注 ===
greg1
box
label "Right Ascension (J2000)" /x
label "Declination (J2000)" /y
! 添加标题
draw text 0.5 1.08 "CO(2-1) Integrated Intensity" 1.5 /center
! 添加颜色条说明
greg2
wedge /position 19 6
! === 输出 ===
hardcopy co_mom0.ps /device ps
message "Plot completed!"
12. 命令速查表
GREG1 命令(一维/标注)
| 命令 | 功能 |
|---|---|
box |
绘制坐标框 |
clear |
清除图形 |
connect |
绘制连线图 |
device |
设置输出设备 |
draw |
绘制图形元素/文本 |
errorbar |
绘制误差棒 |
hardcopy |
输出到文件 |
histogram |
绘制柱状图 |
label |
设置坐标轴标签 |
limits |
设置坐标范围 |
pencil |
设置画笔样式 |
plot |
绘制数据 |
points |
绘制散点图 |
rule |
绘制轴线 |
set |
设置参数 |
show |
显示当前设置 |
tickspace |
设置刻度间距 |
GREG2 命令(二维/图像)
| 命令 | 功能 |
|---|---|
convert |
坐标转换 |
ellipse |
绘制椭圆 |
extrema |
显示图像极值 |
grid |
绘制经纬网格 |
levels |
设置等高线等级 |
mask |
多边形遮罩 |
mean |
多边形内统计 |
perspective |
三维透视图 |
plot |
绘制灰度图 |
polygon |
定义多边形 |
projection |
设置投影 |
resample |
图像重采样 |
rgdata |
读取二维数据 |
rgmap |
绘制等高线 |
strip |
提取条带数据 |
wedge |
绘制颜色条 |
write |
保存数据 |
13. 常见问题解决
13.1 图形不显示
# 检查设备设置
GreG> show device
# 重置设备
GreG> device xwin
13.2 坐标轴标签不显示
# 确保在绘图后设置标签
GreG> plot
GreG> label "X Axis" /x
GreG> box
13.3 等高线不出现
# 检查等高线等级是否设置
GREG2> levels
# 检查图像极值
GREG2> extrema
# 确保在正确范围内设置等级
GREG2> levels 0.1 0.5 1.0
14. 进阶资源
| 资源类型 | 说明 |
|---|---|
| 官方文档 | doc greg 在 GREG 内查看 |
| CookBook | 官方示例教程 |
| 示例数据 | $GILDAS_DIR/demo/greg/ |
| 编程接口 | GREG High-Level Subroutines 供 Fortran 调用 |
浙公网安备 33010602011771号