PGPLOT 的一个示例程序
简介
PGPLOT典型的应用主要是一些已知测定点的描绘和理论曲线的比对。
这里给出一个简单的例子程序,画出5个数据点,理论曲线为y=x^2。
代码
代码如下所示:
1 | /** |
PGPLOT典型的应用主要是一些已知测定点的描绘和理论曲线的比对。
这里给出一个简单的例子程序,画出5个数据点,理论曲线为y=x^2。
代码如下所示:
1 | /** |
关于数据初始化就不多做解释了。
但凡对C语言有了解的人,应该和容易明白上述代码(除了PGPLOT调用子函数)。
开始使用PGPLOT编程的第一步就是要选定输出的设备,函数为cpgbeg。
函数cpgpt用于绘制一个或多个点,详细参考函数原型。
函数cpgline用于绘制一条线,详细参考函数原型。
在结束绘图后调用函数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副图片。