我正在阅读Gnuplot in Action一书,我遇到了关于“每个”命令的部分。作者使用的示例数据是:
# time - value
0 100.03 # temperature
0 2.10 # pressure
1 100.26 # t
1 2.02 # p
2 101.34 # t
2 1.95 # p
3 102.41 # t
3 1.87 # p
他使用以下命令绘制温度与第一列数据(时间):
plot "data" every 2 using 1:2 with lines
有没有办法在不必操纵文件本身的情况下绘制温度与压力的关系?换句话说,是否可以将相同的列用于绘图的x和y数据?
答案 0 :(得分:1)
由于gnuplot一次读取1条“记录”,因此我无法做到这一点。您可以告诉gnuplot要读取哪些记录,但是没有办法告诉gnuplot混合相邻的记录(除了将繁重的工作转移到其他一些实用程序之外)。但是,由于gnuplot可以读取其他实用程序的标准输出,因此您可以在不弄乱磁盘上的文件或创建任何临时文件的情况下执行此操作。以下是使用awk的方法:
#untested
plot '<awk "BEGIN{getline}{a=$2;getline; b=$2; print a,b}" test.dat' u 1:2 w lines
# #discard header #line1 #line2 #print mix
使用sed
可能有一种更简单的方式,但我不知道sed
以及我知道awk
这也不是太糟糕