[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ 19 ] [ 20 ] [ 下一页 ]


Debian 用户参考手册 (过时文档)
第 11 章 - 科学


作者 = Andreas Franzen anfra@debian.org

主题 = 数学部分的所有内容

本章最新更新:2000 年 1 月 9 日


11.1 本章涵盖内容

本章介绍使用 Debian GNU/Linux 进行科学研究的可能方法。 这尤其意味着如何处理测量数据并将其转换为论文。

为了说明这些概念,Debian 发行版的 doc 部分中的 diploma 软件包包含了一些真实世界的示例。


11.2 绘图

在计算机的科学应用中,一个重要的方面是数据的图形化表示。 最常见的形式是二维绘图。 使用 Debian 系统创建此类绘图有很多不同的方法。 这些方法包括命令行工具、编程库、脚本语言解释器和带有 GUI 的程序。

这些不同方法中哪种是最好的,取决于要解决的问题和整体概念。 如果概念是将整个工作组织在一个 make 项目中,则将数据转换为图表并干净地集成到 makefile 中非常重要。 这意味着交互式操作是不可能的。 另一方面,使用 GUI 驱动的程序创建特殊绘图可能会更容易和更快。

绘制数据的经典方法是命令行工具 graph。 它包含在 plotutils 软件包中。 只需调用 graph 并使用一些命令行选项来设置轴标签等,就可以将数据转换为出版质量的绘图。 有趣的是,可以包含大量特殊字符,并将绘图以程序 xfig 的文件格式输出。 这些绘图可以使用 GUI 驱动的矢量图形程序 xfig 进行重新排列和更改。 可以通过 info plotutils 访问文档。

使用 plotutils 软件包创建图表的另一种可能性是直接使用 graphs metafile 格式。 这使得可以使用简单的图形描述语言编写和编辑绘图。

此外,plotutils 软件包还附带一个 C 库,该库使得可以从 C 程序创建图形输出。

将数据转换为绘图的另一种非常流行的方法是程序 gnuplot。 该程序可以与交互式界面一起使用,也可以用作脚本语言解释器。 后一种方式使得可以将 gnuplot 的调用包含在 make 项目中。

有时,可能需要直接使用图形描述语言 Ghostscript。 例如,如果要将灰度图像包含到图表中,则必须将该图像的旋转角度调整几度而不会造成质量损失,并且必须调整打印的栅格频率,以在可再现性和分辨率之间获得最佳折衷方案。 在这种情况下,Ghostscript 是一个解决方案。 关于图表组合和 diploma 软件包的部分提供了有关此主题的更多信息。

Debian 发行版还提供了一些 GUI 驱动的绘图程序。 其中最有用的是 grace。 X Window 二进制文件是 xmgrace。 它可以在菜单 programs-apps-math-grace 中找到。 也可以使用 grace 软件包进行批处理。 Grace 项目文件使用人类可读的描述语言。 关于 grace 的文档位于 /usr/lib/grace/doc 中,示例位于 /usr/lib/grace/examples 中。


11.3 组合图表

有时,需要将绘图程序(如 graph)生成的绘图与附加图像组合在一起。 一种可能的方法是将 graph 的输出格式设置为 fig,这将创建一个 .fig 文件。 这可以使用图形程序 xfig 手动编辑。 此方法的缺点是,每次对原始绘图进行更改时,都必须重复附加的修改。 当您尝试在 makefile 中总结工作结构时,这尤其令人恼火。 当原始绘图更新时,make 命令无法执行您使用 xfig 进行的附加修改。

一种可能性是分别创建原始绘图和附加图形。 手动创建的图形保存为 .eps 文件,该文件在 makefile 中被视为源代码。 手动创建的图形和原始绘图的组合随后通过 makefile 中的命令完成。 每当原始绘图更改时,相同的手动创建的图形将自动添加到新绘图中。

当您想要将来自不同来源的图形组合成一个图形以包含在例如 LaTeX 文档中时,最简单的方法是使用 .eps 格式。 .eps 文件是文本文件,它们具有轻松组合成新的 .eps 文件的重要可能性。

Debian GNU/Linux 系统中包含的用于处理 .eps 文件的编程语言是 Ghostscript。 Ghostscript 解释器位于 text 部分中的 gs 软件包中。 该二进制文件也名为 gs

为了快速开始使用 Ghostscript,您可以在 X Window 中打开一个控制台窗口,然后在 shell 提示符下键入 gs。 然后,将弹出一个带有图形显示的其他窗口,您将在控制台中获得 GS> 提示符。 Ghostscript 是一种解释型堆栈导向编程语言。 为了对此有所了解,我们将尝试使用 Ghostscript 计算 (3+5)*7。 该程序很简单。

     3 5 add 7 mul =

详细来说,这意味着

     3     %Put 3 onto the stack.
     5     %Put 5 onto the stack.
     add   %Take the last two elements from the stack and put
           %the sum onto the stack.
     7     %Put 7 onto the stack.
     mul   %Take the last two elements from the stack and put
           %the product onto the stack.
     =     %Take the last element from the stack and print it
           %at the console.

在每个命令之后,您可以键入 pstack 以查看堆栈的当前内容。 然后,我们将尝试在图形显示器上写一行。

     newpath         %Start a new path.
     100 200 moveto  %Move the graphics cursor to x=100, y=200.
     150 210 lineto  %Add a line to the position x=150, y=210.
     stroke          %Draw the current path.

您可以通过键入 quit 离开 Ghostscript 解释器。

这些示例应该使您对 Ghostscript 语言的概念有所了解。 所有 .eps 文件和 .ps 文件都是包含 Ghostscript 程序的文本文件。 通常,这些程序几乎不可读,因为在非常大的标头中定义了许多在以下程序中使用的短缩写。 幸运的是,您不需要锁定描述图形的程序即可将其包含到另一个 .eps 文件中。 .ps 文件和 .eps 文件之间的总体区别在于,.ps 文件通常描述多页的完整文档,而 .eps 文件始终仅包含一个图形。

.eps 格式的文件可能在文件末尾包含 showpage 命令,也可能不包含。 如果没有此命令,将文件发送到打印机将无法获得硬拷贝。 当可以使用 gv 查看图形并设置了正确的纸张尺寸但打印不起作用时,只需在文件末尾添加 showpage 命令通常会有所帮助。

以下示例显示了一个 .eps 文件,其中包含上一个示例的行。

     %!PS-Adobe-3.0 EPSF-3.0
     newpath
     100 200 moveto
     150 210 lineto
     stroke
     showpage
     quit

当您将其另存为 test.eps 并启动 gv test.eps 时,您可以看到一个小窗口,其中包含从左下角到右上角的线。 程序 gv 包含在 Debian GNU/Linux 的 text 部分中的 gv 软件包中。 示例的第一行指示文件格式。 第二行给出了边界框。 这是一个包含绘图的矩形。 当您将鼠标光标放在线上时,可以看到鼠标光标的坐标。 原点是打印区域的左下角,例如打印机的纸张。 x 向右计数为正,y 向上计数为正。 在纸上,单位是点。 一点等于 25.4/72 毫米。 当您的 lpr 命令设置为打印 .ps 文件时,您只需使用 lpr test.eps 将示例文件发送到打印机,您将在纸张上获得相应坐标处的线条。 showpage 命令告诉打印机实际打印页面。 这很常见,但不是 .eps 文件末尾的必需项。 如果 .eps 文件包含在另一个文件中,则必须禁用 showpage 命令。 否则,打印机将打印页面并在每次出现这些包含的 showpage 命令时开始新页面。

现在,我们将两个 .eps 文件组合成一个新的 .eps 文件。 我们绘制以下数据点

     0 0
     1 1
     2 4
     3 9

并将来自 http://www.debian.org 的 Debian 徽标放在绘图的左上角。 Debian 徽标以 logo-50.jpg 下载。 绘图在 plot.eps 中。 这是通过以下命令创建的。

     echo '0 0 1 1 2 4 3 9' | graph -T ps > plot.eps

graph 命令包含在 Debian 发行版的 math 部分中的 plotutils 软件包中。

以下脚本将徽标插入到绘图中,并将组合的图形保存在 figure.eps 中。

     #!/bin/bash
     convert logo-50.jpg logo-50.eps     #Convert the .jpg file
                                         #into an .eps file.
     cat head.asc plot.eps separation.asc logo-50.eps tail.asc > figure.eps

convert 命令包含在 graphics 部分中的 imagemagick 软件包中。 文件 head.asc 包含

     %!PS-Adobe-3.0 EPSF-3.0
     %%BoundingBox: 107 195 492 580
     save gsave /showpage {} def

第一行说明它是一个 .eps 文件。 第二行是边界框。 因为徽标插入到绘图中,所以这与 plot.eps 的边界框相同。 第三行保存虚拟内存和图形状态,因此,可以在 .eps 文件内部完成任何修改。 最后,showpage 命令被重新定义为空。 文件 separation.asc 包含

     grestore restore
     save gsave /showpage {} def
     185 400 translate
     2 2 scale

图形状态和虚拟内存被恢复并再次保存。 徽标在 x 和 y 方向上都按 2 倍缩放,然后向右平移 185 个点,向上平移 400 个点以适合绘图。 也可以使用旋转角度和 rotate 命令进行旋转。 命令的顺序至关重要。 2 2 scale 10 10 translate 意味着原始图像的原点在 20, 20 之后。

文件 tail.asc 的内容是

     grestore restore
     showpage
     quit

这关闭了 .eps 文件。

处理 .eps 文件的示例位于 doc 部分中的 diploma 软件包中。


[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ 19 ] [ 20 ] [ 下一页 ]


Debian 用户参考手册 (过时文档)

版本 0.1,2009 年 12 月 29 日

Ardo van Rangelrooij ardo@debian.org
Jason D. Waterman jwaterma@bbn.com
Thalia L. Hooker th@visi.com
Havoc Pennington rhpennin@midway.uchicago.edu
Oliver Elphick - 维护者 Oliver.Elphick@lfix.co.uk
Bruce Evry bruce@fantek.org
Karl-Heinz Zimmer khz@snafu.de
Andreas Franzen anfra@debian.org