在 Tk 中使用 Gnuplot 绘图

Plotting with Gnuplot in Tk

我看到一个关于我们如何在 Tk 中使用 Gnuplot 绘制图形的话题 Canvas。以下是来自 Donal Fellows@Donal Fellows 的简单代码示例。有人可以帮我用粗体显示这两个命令吗(set term tk;gnuplot .c)?我不明白这是什么意思 mean.Thanks。

 package require Tk
eval [exec gnuplot << "
    **set term tk**
    plot x*x
"]
pack [canvas .c]
**gnuplot .c**

我不是 gnuplot 的专家,但据了解这 2 个命令非常简单。

set term tk

将值字符串tk赋值给变量term.

gnuplot .c

使用参数 .c.

启动命令 gnuplot

在您的代码中,.c 只是 tk canvas 小部件的名称。

更有趣的是第一个 [exec gnuplot <<...] 执行名为 gnuplot 的外部命令初始化 tk 脚本并定义 tk 命令 gnuplot 用于在 canvas 上绘制绘图。

看起来外部 gnuplot 命令生成 tck 代码来定义所有需要的内容。

当您 运行 终端设置为 tkgnuplot 程序时,它会向其标准输出写入一个 Tcl 脚本,该脚本将创建一个过程.该过程称为 gnuplot,它有一个参数,即要绘制的 canvas 的名称。因此,我们使用适当的参数调用 gnuplot 程序,让它告诉您如何创建一个真正进行绘图的命令。我们 eval 生成 canvas,并委托给新创建的 gnuplot 命令在 canvas 上进行实际绘图。

这有点奇怪,理论上不安全(如果 gnuplot 被黑了怎么办?!?!?!哦不!)但在实践中实际上工作得很好。


要了解其工作原理,请尝试执行以下操作:

puts [exec gnuplot << "
    set term tk
    plot x*x
"]

不是评估代码,而是将其打印出来。您会看到它是一个过程定义,以及它究竟是如何工作的。 (唉,我这台电脑上现在还没有安装gnuplot,所以我不能马上给你做检查……)