Iteration Gnuplot在一行中打印列的迭代,而不是打印每个点

Iteration Gnuplot在一行中打印列的迭代,而不是打印每个点,iteration,row,gnuplot,Iteration,Row,Gnuplot,我有一个数据文件,有100行和大约400列。我试图通过迭代列来绘制每组2列(单个点的x和y位置),如下所示: 为什么会发生这种情况?我如何修复它?最终目标是从1到100迭代line\u number以绘制点作为时间的函数,但现在它甚至没有绘制所有特定的线 如果您能解释一下您的解决方案,我将不胜感激,这样我就能更好地理解gnuplot。谢谢大家! 编辑:它实际上也不适用于第一行!当我有行数=1时,我意识到只有一半的点正在被绘制。那么问题是,为什么这根本没有绘制所有的点呢 如果我理解正确,您的数据基

我有一个数据文件,有100行和大约400列。我试图通过迭代列来绘制每组2列(单个点的x和y位置),如下所示:

为什么会发生这种情况?我如何修复它?最终目标是从1到100迭代
line\u number
以绘制点作为时间的函数,但现在它甚至没有绘制所有特定的线

如果您能解释一下您的解决方案,我将不胜感激,这样我就能更好地理解gnuplot。谢谢大家!


编辑:它实际上也不适用于第一行!当我有
行数=1
时,我意识到只有一半的点正在被绘制。那么问题是,为什么这根本没有绘制所有的点呢

如果我理解正确,您的数据基本上如下所示:

r1 x(1,1) y(1,1) x(1,2) y(1,2) ... x(1,200) y(1,200)
r2 x(2,1) y(2,1) x(2,2) y(2,2) ... x(2,200) y(2,200)
r3 x(3,1) y(3,1) x(3,2) y(3,2) ... x(3,200) y(3,200)
...
r100 x(100,1) y(100,1) ...     ... x(100,200) y(100,200)
现在要绘制所有
x/y
对,例如
x(1,1)/y(1,1)
。 我认为您不需要使用
sed
。您只能使用gnuplot来完成。下面是一个简化的示例(5行7列)

代码:

### plot number pairs
reset session

$Data <<EOD
11 12 13 14 15 16 17
21 22 23 24 25 26 27
31 32 33 34 35 36 37
41 42 43 44 45 46 47
51 52 53 54 55 56 57
EOD
stats $Data
M = STATS_records  # number of datarows
N = STATS_columns  # number of columns (be aware, gnuplot only checks the first row)

plot for [j=0:M-1] for [i=2:N-1:2] $Data u i:i+1 every ::j::j with points pt 7 notitle
### end of code
###绘图编号对
重置会话

$Data,该命令应该工作(在此处对按名称访问的本地文件进行测试)。我的最佳猜测是,您的
sed
过滤器正在返回一个无法打印的数据流,一旦遇到一个没有有效点的打印,迭代就会停止。请尝试在
打印的末尾添加一个额外的
with table
。这将简化写入表_文件的内容。您还应该查看该文件以查看其包含的内容。您知道调用最后一列的方法吗?*不起作用,是否存在某个变量或函数,如返回最后一列的
last\u column=thing\u?我的模拟数据会更改每次运行中的点数,因此更容易使用始终有效的方法。我在扫描列时遇到了
*
问题。我猜它是有缺陷的,它可能在某些系统上工作,但在其他系统上崩溃或挂起。您可以执行
stats$Data
并获取变量
stats\u列
。但是请注意,
STATS\u columns
只检查第一行(数据)中的列数。
r1 x(1,1) y(1,1) x(1,2) y(1,2) ... x(1,200) y(1,200)
r2 x(2,1) y(2,1) x(2,2) y(2,2) ... x(2,200) y(2,200)
r3 x(3,1) y(3,1) x(3,2) y(3,2) ... x(3,200) y(3,200)
...
r100 x(100,1) y(100,1) ...     ... x(100,200) y(100,200)
### plot number pairs
reset session

$Data <<EOD
11 12 13 14 15 16 17
21 22 23 24 25 26 27
31 32 33 34 35 36 37
41 42 43 44 45 46 47
51 52 53 54 55 56 57
EOD
stats $Data
M = STATS_records  # number of datarows
N = STATS_columns  # number of columns (be aware, gnuplot only checks the first row)

plot for [j=0:M-1] for [i=2:N-1:2] $Data u i:i+1 every ::j::j with points pt 7 notitle
### end of code