如何从gnuplot中的相同标准输入数据制作几个图?

时间:2011-02-12 23:21:02

标签: gnuplot

我想要一个存储数据和gnuplot命令的.plt文件。我的数据看起来像

# x1 y1 x2 y2
  1  2  3  4
  5  6  7  8

并对应两个图:(x1,y1)和(x2,y2)。

我知道我可以使用"-"之类的:

plot "-" using 1:2
# x1 y1 x2 y2
  1  2  3  4
  5  6  7  8
e

但这只会产生一个图,即(x1,y1)。我正在尝试做类似

的事情
plot "-" using 1:2, "-" using 3:4
# x1 y1 x2 y2
  1  2  3  4
  5  6  7  8
e

但显然这不起作用,因为gnuplot期望第二个"-"的标准输入中有一组新数据。

注意:

  1. 我无法改变数据的样式。它有四列。
  2. 似乎我可以使用reread来完成,但这需要两个文件。我真的只想要一个文件。

2 个答案:

答案 0 :(得分:7)

如果不修改输入数据的方式,就无法做到这一点。当通过标准输入提供gnuplot数据时,它期望多个数据集在它们之间用两个空行分隔,或者在连续的行上交错。选项包括:

  • 将两个数据集输入不同的数据集 完全绘制命令。

  • 更改 文件格式,以便数据集具有 然后,他们之间的空白行 用 index 引用它们。

  • 更改文件格式 交替的线代表不同 数据集,然后全部引用它们 使用每个

  • 将数据合并为一个 文件,将绘图脚本导入 另一个,然后引用数据 不同的文件不止一次 每次使用子句。

How do I plot several data sets in a single file开始,每个索引命令都有一个介绍?这些是gnuplot内置的唯一这类设备,而且你所要求的也没有。你已经修改了数据格式,这很好,因为这不会像你原先希望的那样工作。

答案 1 :(得分:4)

我不确定你能编辑多少文件,但最整洁的方法可能就是把整个东西放在一个shell脚本/批处理脚本中(你是在Linux还是windows?)

在linux上我做这样的事情

#!/bin/bash

#put my data in a file
echo "
# x1 y1 x2 y2
  1  2  3  4
  5  6  7  8
" > my_dat.dat

#launch gnuplot
gnuplot<<EOF
#gnuplot commands here
set output "test.ps"
set term postscript

plot "my_dat.dat" u 1:2, \
     "my_dat.dat" u 3:4

set term pop
set output

EOF

# cleanup
rm my_dat.dat

然后我chmod + wrx我把上面命令放入并运行的文件。

注意:这个问题似乎也有相似之处:

gnuplot stdin, how to plot two lines?

所以你可能也想看那里