我有以下形式的数据文件:
不重要1不重要2不重要3矩阵数据[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的 答案几乎解决了它。我唯一缺少的是如何忽略带有文本标题数据的第一行(行)。每个人似乎都期望数值数据,因此整个图都失败了,因为它不是矩阵。我不想注释掉第一行,因为我将不重要的数据集用于其他2D绘图,而这些2D绘图又使用标头数据。
那么,如何在已经用于every
跳过列的矩阵图中跳过一行呢?
使用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
,但您无需关心。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句