我有一个数据集,其中有两组数据,每组有 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 的第二列呢?这可能吗?还是我必须将它们连续放在同一个索引中。我在文档中进行了搜索,但那里没有提到。感谢您的帮助。
答案 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
结果: