我想要一个存储数据和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期望第二个"-"
的标准输入中有一组新数据。
注意:
reread
来完成,但这需要两个文件。我真的只想要一个文件。答案 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?
所以你可能也想看那里