[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ 19 ] [ 20 ] [ 下一页 ]
作者 = Andreas Franzen anfra@debian.org
主题 = 数学部分的所有内容
本章最新更新:2000 年 1 月 9 日
本章介绍使用 Debian GNU/Linux 进行科学研究的可能方法。 这尤其意味着如何处理测量数据并将其转换为论文。
为了说明这些概念,Debian 发行版的 doc
部分中的 diploma
软件包包含了一些真实世界的示例。
在计算机的科学应用中,一个重要的方面是数据的图形化表示。 最常见的形式是二维绘图。 使用 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
中。
有时,需要将绘图程序(如 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@debian.org
jwaterma@bbn.com
th@visi.com
rhpennin@midway.uchicago.edu
Oliver.Elphick@lfix.co.uk
bruce@fantek.org
khz@snafu.de
anfra@debian.org