Top: Table of contents
Next: Chapter 7. Miscellaneous commands
Previous: Chapter 5. Plotting

Chapter 6. Input, Output

GNUPLOT 描绘数学函数或数值资料图形,所以 GNUPLOT 除接受绘图、定义常数函数 等命令外,尚要能读入数值资料。数值资料通常由程式产生,如表 4。 GNUPLOT 须用指令 plot 或 splot 由档案内读入数值资料。在输出方面 GNUPLOT 除在终端机上显示绘图结果外,尚可输出至许多种输出装置上。在此介绍 GNUPLOT 读入、写出方面的指令。



6.1 Input

在 GNUPLOT 中输入命令的方式有两种:

  1. 执行 gnuplot 后,在 gnuplot> 提示符号下逐行输入命令或是执行 load "work.gnu" 命令。此时,GNUPLOT 执行档案 work.gnu 中的命令。
  2. 在系统提示符号下执行
    % gnuplot work.gnu 
    GNUPLOT 执行 work.gnu 档案内的命令。

GNUPLOT 不论绘数学函数或数值资料皆使用 plot(splot) 指令,此指令在第 5 章 有详细的介绍。在此介绍 GNUPLOT 读入的数值资料格式及 "load" 与 "reread" --- 可读入含有 GNUPLOT 命令的档案。



6.1.1 Read data from file

GNUPLOT 使用 plot(2D) 或 splot(3D) 指令读入数值资料档及绘出图形, 详细的描述见 5.3 节。数值资料的格式为每行一组资料, 若该行开头为 # 表示该行为注解;若开头为空白,则忽略这些空白。 一组资料中的数字以空格或 tab 分开,数字以整数、浮点数字或科学记号来表示。 下表即是数值资料档 "data.gnuplot" 的范例。

  # data.gnuplot
  0 2 3 1 
  1 4 2 3 
  3 10 8 4
  4 8 12 1
  10 2 3 2
An example of datafile.(III)
输入
plot "data.gnuplot"  # 画出 2D 的图形
plot "data.gnuplot" using 1:3:4 with errorbars   # 画出 2D errorbar 图形


6.1.2 Read commands from file

当使用 GNUPLOT 进行繁杂的绘图工作时,需要许多命令来完成工作。这些命令可储存在档案内,再经由 "load" 指令将命令由档案内读出及执行。这些包含常数、函数的定义及绘图环境的设定。load 可读由 save 命令所储存的档案。load 语法为:
    load "<input-file>"   # 使用 "(双引号) 或 '(单引号) 皆可
例子如下:
    load "work.gnu"	# 读入 work.gnu 档案中的指令。
work.gnu 档案内容为
    damp(t) = exp(-s*wn*t)/sqrt(1.0-s*s)
    per(t) = sin(wn*sqrt(1.0-s**2)*t - atan(-sqrt(1.0-s**2)/s))
    c(t) = 1-damp(t)*per(t)
    wn = 1.0
    set xrange [0:13]
    set samples 50
    set dummy t
    plot s=.1,c(t),s=.3,c(t),s=.5,c(t),s=.7,c(t)
    replot s=.9,c(t),s=1.0,c(t),s=1.5,c(t),s=2.0,c(t)

在 GNUPLOT 中执行 load "work.gnu" 之后,绘出图15 的结果。 使用 load 指令执行 gnuplot 指令可不用每次皆逐一设定绘图环境与函数常数设定等, 亦可将此次结果储存起来留待下次使用。


图 15: Demonstration of read commands from file

通常 GNUPLOT 完成一件绘图工作的过程中,须设定许多绘图环境。 若紧接著画另一张图时,往往需调整许多绘图环境参数。此时可读一 GNUPLOT 原始设定的档案,使 GNUPLOT 的设定恢复成起始状态,就可不必逐一调整绘图环境。 例如将 GNUPLOT 的起始状态存于 environment.gnu