用Tk中的Gnuplot绘图

时间:2016-10-06 16:20:05

标签: tcl tk

我看过一个关于我们如何使用Tk Canvas中的Gnuplot绘制图形的主题。以下是Donal Fellows @ Donal Fellows的简单代码示例。有人可以用Bold帮助我解决这两个命令(设置术语tk; gnuplot .c)吗?我无法理解它是什么意思。谢谢。

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

2 个答案:

答案 0 :(得分:2)

当您运行 gnuplot 程序并将终端设置为tk时,它会在其标准输出中写入一个将创建过程的Tcl脚本。该过程称为gnuplot,它采用单个参数,即绘制到的画布的名称。所以我们用适当的参数调用 gnuplot 程序,让它告诉你如何制作一个实际上会进行绘图的命令。我们eval结果,制作画布,并委托新创建的gnuplot命令在画布上实际绘图。

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

要了解其工作原理,请尝试:

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

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

答案 1 :(得分:0)

我不是 gnuplot 的专家,但据我所知,2命令非常简单。

set term tk

将值字符串 tk 分配给变量 term

gnuplot .c

使用参数 .c 启动命令 gnuplot

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

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

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