Gnuplot:如何跳过矩阵输入中的列进行绘图?

时间:2015-01-29 13:27:29

标签: plot gnuplot

我有以下格式的数据文件:

unimportant1      unimportant2    unimportant3     matrixdata[i]
1e4               2e5             3e2              1 2 3 4 5
2e3               1e1             7e3              5 4 3 2 1
...               ...             ...              ...
2e3               1e4             4e2              4 4 4 4 4

所以它有第一行的列标题(这里是“unimportant1”到“unimportant3”)。我希望gnuplot忽略前三个不重要的列列,因此数据条目采用指数表示法。我希望gnuplot将matrixdata绘制为矩阵。好像我这样做了:

#!/usr/bin/gnuplot -p

plot '-' matrix with image
1 2 3 4 5
5 4 3 2 1
...
4 4 4 4 4

e

如何让gnuplot忽略前三列和标题行,并将其余部分绘制为矩阵图像?为了兼容性,我会优先使用内置的gnuplot来做到这一点,但我可以编写一个shell脚本并使用`plot'< ...'语法预处理数据文件。

修改neuhaus' answer几乎解决了这个问题。我唯一缺少的是,如何忽略带有文本标题数据的第一行(行)。每个人似乎都期望数字数据,所以整个情节失败,因为它不是一个矩阵。我不想评论第一行,因为我正在使用其他2D图的不重要数据集,而这些数据集又使用标题数据。

那么我如何跳过已使用every 跳过列的矩阵图中的一行?

3 个答案:

答案 0 :(得分:2)

我不熟悉矩阵图,但我得到了一些样本数据和

plot 'matrix.dat' matrix every ::3 with image

似乎可以解决问题。

答案 1 :(得分:2)

使用matrix时,gnuplot必须首先解析数据文件,然后才能跳过行和列。现在,您的第一行评估为四个无效数字,第二行有8个数字,我收到Matrix does not represent a grid的错误。

如果您不想注释掉第一行或使用< tail -n +2 matrix.dat之类的外部工具跳过它,那么您可以将其更改为包含一些虚拟字符串,例如

unimportant1      unimportant2    unimportant3     matrixdata[i] B C D E
1e4               2e5             3e2              1 2 3 4 5
2e3               1e1             7e3              5 4 3 2 1
...               ...             ...              ...
2e3               1e4             4e2              4 4 4 4 4

现在,您的第一行包含与其他行一样多的条目,您可以使用

绘制此文件
plot 'test.txt' matrix every ::3:1 with image

这仍然会为您提供warning: matrix contains missing or undefined values,但您无需关心。

答案 2 :(得分:0)

你可以使用shell命令,例如,下面的内容会跳过文件的前六行:

plot '<tail -n +7 terrain0.dem' matrix with image