0%

虽然只是自己的随笔,随便写写,还是献给我亲爱的父母和可爱的女朋友WXM同学。

序言

本心得手册为PGPLOT的C语言编程中文手册,为广大的中国PGPLOT fans而作。

由于最近有个项目要用到PGPLOT,就花了几天的时间来熟悉这个天文界极为常见的图库,后面因为在网上没有找到关于C-bind的文章,就索性大概写了一下心得(由于正常工作时间不可能全部花在这个上面,所以时间就比较紧促,排版方面也是很草草了了~)。

最后我会附上PGPLOT的manual原版,我没有纯粹的来翻译这本手册,只是大概按照自己的学习步骤,随便写了写,因为对中英文的计算机术语没有较深涉入,所以会有些术语不是很标准,希望读到的XDJM多多的提意见。

在c语言中一般都要加上c前缀,比如PGBOX在c语言中调用为cpgbox。有些函数比如PGWINDOW有相同含义的PGSWIN,在C语言中调用cpgswin即可。

对了,本文PGPLOT的操作平台为Linux/MacOSX系统。

好友cosmancosman.leo@gmail.com(全能牛人)前一段时间用python调用PGPLOT做出了一个天文数据处理的软件,如果有PGPLOT和python的接口问题,可以咨询他。

大部分文档写于2011-06-18~2011-07-18

PGBAND – 读取有锚定点的光标位置

对应的C函数为

1
int cpgband(int mode, int posn, float xref, float yref, float *x,  float *y, char *ch_scalar);

用户读取光标位置和字符类型。位置返回值为世界坐标。如果POSN=1,PGBAND 指出光标的位置,并且允许用户使用鼠标或者方向键移动光标。在确定光标位置后,用户可以输入键盘上的一个字符;PGBAND将返回这个字符和新的光标位置。

一些交互设备提供了一些光标类型的可选项,一般而言都是较细的线条,但在绘制这个的时候,不会擦除以前的绘图。

下面的关于MODE的选项也和锚定点XREF,YREF有关。对于设备不支持光标类型的,默认MODE=0.

– 如果 MODE=0, 锚定点将被忽略,类似PGCURS.
– 如果 MODE=1, 从锚定点到光标位置绘制一个直线线条
– 如果 MODE=2, 从锚定点(左下角)到光标位置(右上角)绘制一个中空的矩形。当然矩形的边缘为平行或者垂直的。
– 如果 MODE=3, 绘制两条扩展并横跨显示宽度的水平线,其中一条通过锚定点,另一条通过光标位置。这通常用于选择一个已知的Y轴范围。
– 如果 MODE=4, 绘制两条扩展并横跨显示宽度的垂直线,其中一条通过锚定点,另一条通过光标位置。这通常用于选择一个已知的X轴范围。
– 如果 MODE=5, 只绘制一条水平线条
– 如果 MODE=6, 只绘制一条水平线条
– 如果 MODE=7, 以光标为中心绘制一个十字交叉线

返回值:

1
PGBAND          : 成功返回1;无光标或失败返回0

参数:

1
2
3
4
5
6
7
MODE   (输入)  : 显示方式 (从0到7:上面有描述).
POSN (输入) : 如果POSN=1, PGBAND 将把光标放在点(X,Y);如果POSN=0,光标将被放置在当前的位置
XREF (输入) : 锚定点的x坐标
YREF (输入) : 锚定点的y坐标
X (输入/输出) : 光标的x坐标
Y (输入/输出) : 光标的y坐标
CH (输出) : 用户输入的字符值,如果没有光标或者出现错误,返回’\0’

cpgbeg – 打开一个图形设备

对应的C函数为

1
int cpgbeg(int unit, const char *file, int nxsub, int nysub);

新的程序最好用PGOPEN而不是PGBEG。PGOPEN会保留现存程序的兼容性。PGBEG不像PGOPEN,它将关闭打开的任何图形设备,所以对于它不能被用于并行的打开设备。

PGBEG 为随后的绘图打开一个图形设备或者一个文件。在调用其他子程序之前,都必须使用PGBEG或PGOPEN打开一个设备。

返回值:

PGBEG : 返回1成功,其他失败并在标准错误单元中显示错误信息。

参数:

  • UNIT (输入) : 0(惯例)
  • FILE (输入) : 输出设备或文件名,参考PGOPEN
  • NXSUB (输入) : 视图面细分的X轴(横向)个数
  • NYSUB (输入) : 视图面细分的Y轴(纵向)个数

PGPLOT将在屏幕上显示NXSUB * NYSUB个图像。如果有N个细分视图的话,PGPAGE 将移动到下一个子视图,而不是下一个物理页。如果NXSUB > 0, PGPLOT将横向排列,如果 NXSUB <0, PGPLOT将纵向排列。

如果const char *file,那么输出为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Graphics device/type (? to see list, default /Xserve): ?
PGPLOT v5.2.2 Copyright 1997 California Institute of Technology
Interactive devices:
/XWINDOW (X window window@node:display.screen/xw)
/XSERVE (A /XWINDOW window that persists for re-use)
Non-interactive file formats:
/GIF (Graphics Interchange Format file, landscape orientation)
/VGIF (Graphics Interchange Format file, portrait orientation)
/LATEX (LaTeX picture environment)
/NULL (Null device, no output)
/PNG (Portable Network Graphics file)
/TPNG (Portable Network Graphics file - transparent background)
/PS (PostScript file, landscape orientation)
/VPS (PostScript file, portrait orientation)
/CPS (Colour PostScript file, landscape orientation)
/VCPS (Colour PostScript file, portrait orientation)
Graphics device/type (? to see list, default /Xserve):