如何在 Gnuplot 中绘制具有不同索引的两列?
How to plot two columns with different index in Gnuplot?
我有一个数据集,其中有两组数据,每组数据有 3 列。我知道我使用 plot "dataset.dat" i 0 u 1:2
绘制第一组数据中的第二列与第一列(索引从零开始),或 plot "dataset.dat" i 1 u 2:3
绘制第二列中的第三列与第二列数据集。但是,如果我想绘制索引 1 的第二列与索引 0 的第二列怎么办?这可能吗?还是我必须将它们连续地放在同一个索引中。我在文档中进行了搜索,但那里没有提到。感谢您的帮助。
这基本上是一个数据(重新)排列挑战。您可以使用任何外部工具重新排列数据,但原则上您也可以使用 gnuplot 以某种方式进行。
一种可能的解决方案是将您的 y 值(从索引 1 开始)放在一个单独的数据块中(此处;$myY
),并在最终的绘图命令中通过数据块行索引对其进行寻址,该行索引从 1 开始并且需要一个整数,这就是为什么它是 $myY[int([=12=]+1)]
。此外,您需要通过 real()
将其转换为(浮点数)数字,检查 help real
。假设子块具有相同的长度。
代码:
### plot x and y from different indices
reset session
$Data <<EOD
11 12 13
21 22 23
31 32 33
111 112 113
121 122 123
131 132 133
EOD
set table $myY
plot $Data u 2 index 1 w table
unset table
unset key
plot $Data u 2:(real($myY[int([=10=])+1])) index 0 w lp pt 7
### end of code
结果:
我有一个数据集,其中有两组数据,每组数据有 3 列。我知道我使用 plot "dataset.dat" i 0 u 1:2
绘制第一组数据中的第二列与第一列(索引从零开始),或 plot "dataset.dat" i 1 u 2:3
绘制第二列中的第三列与第二列数据集。但是,如果我想绘制索引 1 的第二列与索引 0 的第二列怎么办?这可能吗?还是我必须将它们连续地放在同一个索引中。我在文档中进行了搜索,但那里没有提到。感谢您的帮助。
这基本上是一个数据(重新)排列挑战。您可以使用任何外部工具重新排列数据,但原则上您也可以使用 gnuplot 以某种方式进行。
一种可能的解决方案是将您的 y 值(从索引 1 开始)放在一个单独的数据块中(此处;$myY
),并在最终的绘图命令中通过数据块行索引对其进行寻址,该行索引从 1 开始并且需要一个整数,这就是为什么它是 $myY[int([=12=]+1)]
。此外,您需要通过 real()
将其转换为(浮点数)数字,检查 help real
。假设子块具有相同的长度。
代码:
### plot x and y from different indices
reset session
$Data <<EOD
11 12 13
21 22 23
31 32 33
111 112 113
121 122 123
131 132 133
EOD
set table $myY
plot $Data u 2 index 1 w table
unset table
unset key
plot $Data u 2:(real($myY[int([=10=])+1])) index 0 w lp pt 7
### end of code
结果: