ds整理的greg教程

GREG 是 GILDAS 软件套件中的通用绘图程序,用于创建出版级的天文数据可视化,包括一维曲线、二维灰度图和等高线图。本教程基于 GILDAS 官方文档整理。


📖 目录

  1. GREG 概述与启动

  2. 基础命令与语法

  3. 坐标系统与视图设置

  4. 一维数据绘图

  5. 二维图像与等高线

  6. 图形标注与修饰

  7. 颜色与灰度图

  8. 多边形工具

  9. 高级功能

  10. 脚本与批处理

  11. 完整工作流程示例

  12. 命令速查表


1. GREG 概述与启动

1.1 什么是 GREG?

GREG 是 GILDAS 的图形引擎,提供:

  • 一维曲线绘图(光谱、光变曲线)

  • 二维灰度图与等高线图

  • 多种坐标投影(赤道、银道、AITOFF 等)

  • 出版级标注与输出

1.2 启动与退出

bash
# 启动 GREG
$ greg

# 启动后显示提示符
GreG> 

# 退出
GreG> exit
# 或按 Ctrl+D

1.3 获取帮助

bash
# 查看所有命令
GreG> help

# 查看特定命令帮助
GreG> help plot
GreG> help rgmap

# 查看命令详细说明
GreG> doc rgmap

2. 基础命令与语法

2.1 命令结构

GREG 命令遵循 SIC 语法:

  • 位置参数:按顺序提供

  • 选项:以 / 开头,可带参数

  • 参数与选项用空格分隔

bash
# 语法示例
GreG> COMMAND arg1 arg2 /OPTION1 value1 /OPTION2

2.2 设备设置

bash
# 设置输出设备
GreG> device xwin          # 显示在屏幕(X Window)
GreG> device ps            # 输出 PostScript
GreG> device ps output.ps  # 指定输出文件名

# 查看当前设备
GreG> show device

2.3 清除图形

bash
# 清除当前图形
GreG> clear

# 清除特定段
GreG> clear segment

3. 坐标系统与视图设置

3.1 设置坐标轴

bash
# 手动设置坐标范围
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 设置绘图框位置

bash
# 设置绘图框在页面上的位置(厘米)
GreG> set box location x1 x2 y1 y2

# 自动匹配坐标范围
GreG> set box location match

3.3 投影与坐标系

GREG2 语言支持多种天文投影:

bash
# 切换到 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 基本绘图命令

bash
# 从文件读取数据并绘图
GreG> column /file data.dat
GreG> plot

# 指定列
GreG> column x 1 y 2 /file data.dat
GreG> plot

4.2 数据连接方式

bash
# 点状图
GreG> points

# 连线图
GreG> connect

# 带误差棒
GreG> errorbar

# 柱状图
GreG> histogram

4.3 多数据叠加

bash
# 第一组数据
GreG> column /file spec1.dat
GreG> plot

# 叠加第二组数据(不同颜色)
GreG> column /file spec2.dat
GreG> plot /over /colour

4.4 绘图样式控制

bash
# 设置画笔
GreG> pencil 2                 # 线宽2
GreG> pencil /dashed 3         # 虚线样式3
GreG> pencil /colour 2         # 颜色2

# 重置为默认
GreG> pencil /default

5. 二维图像与等高线

5.1 读取二维数据

bash
# 读取 FITS 图像到 RG 数组
GREG2> rgdata image.fits

# 查看图像信息
GREG2> extrema                 # 显示最小/最大值
GREG2> limits /rgdata          # 设置坐标范围

# 显示图像(灰度图)
GREG2> plot

5.2 等高线绘图

等高线绘图的标准流程:

bash
# 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 等高线等级设置

bash
# 指定多个等级
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 等高线样式

bash
# 绘制所有等高线
GREG2> rgmap

# 仅绘制正等高线
GREG2> rgmap /only positive

# 仅绘制负等高线
GREG2> rgmap /only negative

# 带填充的等高线
GREG2> rgmap /grey colour 16   # 16级灰度填充

6. 图形标注与修饰

6.1 添加文本标签

bash
# 基本文本(用户坐标)
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 绘制图形元素

bash
# 绘制矩形框
GreG> box

# 绘制轴线
GreG> rule

# 绘制刻度线
GreG> tickspace 1 10 1 10      # 设置大刻度和小刻度间距

6.3 坐标轴标签

bash
# 设置标签
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 命令生成灰度图:

bash
# 基本灰度图
GREG2> plot

# 线性灰度拉伸
GREG2> plot /scaling linear low_cut high_cut

# 对数灰度拉伸
GREG2> plot /scaling logarithmic 0.01 100

# 设置空白值
GREG2> plot /blanking -999 0

7.2 完整灰度图示例

bash
# 读取图像
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 颜色楔形图例

bash
# 绘制颜色条
GREG2> wedge

# 自定义颜色条位置
GREG2> wedge /position x y

8. 多边形工具

POLYGON 命令用于定义多边形区域,供 MASK 和 MEAN 命令使用。

8.1 交互式定义多边形

bash
# 进入交互式定义模式
GREG2> polygon

# 鼠标/键盘操作:
# - 左键/任意键:添加顶点
# - 中键/C:删除最后一个顶点
# - 右键/E:结束定义
# - Q:退出

8.2 从文件读取多边形

bash
# 从文件读取顶点(X 列1,Y列2)
GREG2> polygon vertices.dat

# 查看当前多边形
GREG2> write polygon

8.3 多边形遮罩

bash
# 遮罩多边形内部的像素
GREG2> mask in

# 遮罩多边形外部的像素
GREG2> mask out

# 指定空白值
GREG2> mask in /blanking -999

8.4 多边形内统计

bash
# 计算多边形内像素的统计量
GREG2> mean

# 带 sigma 剔除
GREG2> mean /clip 3.0

# 查看结果(存储在 POLY%SUM 和 POLY%AREA)
GREG2> show poly

8.5 绘制多边形

bash
# 仅绘制轮廓
GREG2> polygon /plot

# 填充颜色
GREG2> polygon /fill 5

# 填充阴影线
GREG2> polygon /hatch 3 45 0.25 0

# 组合使用
GREG2> polygon /fill 2 /plot

9. 高级功能

9.1 三维透视图

bash
# 基本三维视图
GREG2> perspective 30 45

# 带线的三维视图
GREG2> perspective /lines

# 设置缩放因子
GREG2> perspective /factor 1.0 0.5

# 设置垂直范围
GREG2> perspective /vertical 0 100

9.2 椭圆绘制

bash
# 绘制椭圆(半长轴、半短轴、位置角)
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 图像重采样

bash
# 重采样到新网格
GREG2> resample nx ny

# 重采样并平滑
GREG2> resample 256 256 /smooth

9.4 图像条带提取

bash
# 提取一行数据
GREG2> strip x y

# 提取并保存
GREG2> strip x y /write strip.dat

9.5 坐标转换

bash
# 转换坐标(从赤道到当前投影)
GREG2> convert ra dec

# 指定输入系统
GREG2> convert ra dec /system galactic

10. 脚本与批处理

10.1 创建脚本文件

创建 plot_contours.greg

bash
! 等高线绘图脚本
! 作者: 你的名字

! 设置设备
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 执行脚本

bash
# 在 GREG 中执行
GreG> @plot_contours.greg

# 或在命令行执行
$ greg -p plot_contours.greg

10.3 变量与循环

bash
! 批量处理多个文件
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 谱线立方体的积分强度图

bash
! 文件: 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 图形不显示

bash
# 检查设备设置
GreG> show device

# 重置设备
GreG> device xwin

13.2 坐标轴标签不显示

bash
# 确保在绘图后设置标签
GreG> plot
GreG> label "X Axis" /x
GreG> box

13.3 等高线不出现

bash
# 检查等高线等级是否设置
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 调用
posted @ 2026-03-26 19:08  cql_astro  阅读(22)  评论(0)    收藏  举报