关于数据初始化就不多做解释了。
但凡对C语言有了解的人,应该和容易明白上述代码(除了PGPLOT调用子函数)。
关于数据初始化就不多做解释了。
但凡对C语言有了解的人,应该和容易明白上述代码(除了PGPLOT调用子函数)。
开始使用PGPLOT编程的第一步就是要选定输出的设备,函数为cpgbeg。
函数cpgline用于绘制一条线,详细参考函数原型。
函数cpgpt用于绘制一个或多个点,详细参考函数原型。
在结束绘图后调用函数cpgend,如果不结束可能会影响到后续的程序。
本章主要介绍一些图像显示的位置和比例的控制问题。
在上一章的简单示例中,我们通过PGENV来自动的控制图像的位置和标记信息。但是,为了获得对位置和标记等的完全控制,我们还需要了解下述知识:
另外还有两个坐标系统:
一个简单的PGPLOT图像或许只是描述了二维的两个变量之间的依赖关系。
一个典型的图像包括数据点(误差条、点标记或者块标记)、连接在一起的线条,或者理论模型的平滑曲线。另外还要加上坐标来指出刻度等信息。
程序员应该在矩形的笛卡尔坐标轴上描述出一些必要的信息。
当然,对于这样的坐标系有一定的弊端,只能描述浮点型数据。
对于x和y坐标系不同计量单位的图像,我们后面会有所介绍。比如横坐标为时间,纵坐标为流量密度的射电源图像。
在PGPLOT编程过程中选择世界坐标系作为默认设置。
1 | PGPLOT maps a selected rectangular region of the world-coordinate space (termed the window) onto a specified rectangle (termed the viewport) on the view surface (the screen of an interactive display or a sheet of paper on a hardcopy plotter). |
这一段比较重要,指出了上面我们提到的三个术语,这三个术语要搞搞清楚,后面对于一些子程序,会对不同的术语做出不同配置。我不做翻译。只可意会不可言传~ ^_^
通俗的理解,先指定view surface,可以是显示的图像或者保存的ps文件;然后设置viewport,这个就是方框内的图形,不包括注释;而window就是实际对应的数值信息,比如随着时间的流量信息。
一个图像程序第一件要做的事情就是告诉PGPLOT选择使用什么设备作为输出,前面我们也提到过,一共有两种不同的设备类型。
这个设备类型我们可以在pgbeg函数中提前确定,例如PGBEG (0, ‘plotfile.ps/PS’, 1, 1),就是输出文件名为plotfile.ps的ps类型文件。也可以使用“?“来输出时自行选择。
当然,在完成我们的绘图工作以后,调用cpgend来刷新输出结果是有必要的,就像C语言中malloc以后要调用free,以免引起内存泄露。
对于不同的输出设备,PGPLOT默认是有一些输出default设置的。比如ps输出,就会采用标准的18X5inches的景观模式。
如果你有自己的审美观,准备设置一些高级的输出,那么这是你可以调用pgpage(后面有详细介绍)来设定宽度、比例。
PGBEG的最后两个参数nx和ny,可以将窗口分割为nx*ny个小窗口,例如nx和ny均取3,那么将绘制出9副图片。

PGPLOT是个Fortran子程序库。
目前,由于不同语言之间的协议不同,在C或者C++中直接调用PGPLOT是比较困难的。
另外,c语言是传值调用的,而FORTRAN是按引用传递的。CPGPLOT 库包装了C和PGPLOT库,其中的函数屏蔽了不同系统的差别,提供了与系统无关的接口。
编写PGPLOT程序的时候,只需要在头文件中添加文件头cpgplot.h即可,其中包含了我们所需要调用的一些函数原型。
CPGPLOT库只能用在与ANSI C兼容的c编译器(可以解析C函数原型)。
PGPLOT是一个设备无关的画图软件包,常用于简单的科学计算做图。PGPLOT用Fortran语言,但可以在C、Perl、Phython、Ruby等语言中调用,支持PS、GIF、PNG等很多图形格式,可以运行在Linux, SunOS, Solaris, HPUX, AIX, Irix, and MacOS X/Darwin等操作系统。
PGPLOT由加州理工(California Institute of Technology)的Tim Pearson编写。Tim是加州理工天文系(Department of Astronomy)的助理教授,主要做射电、宇宙学方面的研究。
目前PGPLOT最新的版本是2001-02-26发布的5.2.2版。版权属于加州理工学院。PGPLOT不是开放软件,但可以免费用于非商业用途。