我有以下格式的数据文件:
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
跳过列的矩阵图中的一行?
答案 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