如何在 Gnuplot 中绘制具有不同索引的两列?

时间:2021-04-10 17:48:49

标签: gnuplot

我有一个数据集,其中有两组数据,每组有 3 列。我知道我使用 public class Worker : BackgroundService { private readonly IRabbitMqService _mqService; private readonly ILogger<IRabbitMqService> _logger; public Worker(IRabbitMqService mqService, ILogger<IRabbitMqService> logger) { _mqService = mqService; _logger = logger; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { if (_mqService != null) await _mqService?.Receive(Target); } public async Task Target(PdfMsg t) { await Task.Run(() => { Console.WriteLine(t.Data); }).ContinueWith(task => { if (task.IsCompleted && !task.IsFaulted) { // Everything worked out ok } else { throw new EasyNetQException( "Message processing exception - look in the default error queue (broker)"); } ; }); } } 来绘制第二列与第一组数据中的第一列(索引从零开始),或使用 plot "dataset.dat" i 0 u 1:2 绘制第三列与第二列中的第二列数据集。但是如果我想绘制索引 1 的第二列与索引 0 的第二列呢?这可能吗?还是我必须将它们连续放在同一个索引中。我在文档中进行了搜索,但那里没有提到。感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这基本上是一个数据(重新)排列挑战。您可以使用任何外部工具重新排列数据,但原则上您也可以使用 gnuplot 以某种方式进行。 一种可能的解决方案是将您的 y 值(来自索引 1)放在单独的数据块(此处;$myY)中,并在最终的绘图命令中通过数据块行索引对其进行寻址,该行索引从 1 开始并需要一个整数,这就是为什么它是 $myY[int($0+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($0)+1])) index 0 w lp pt 7
### end of code

结果:

enter image description here