【问题标题】:Multiple plots with gnuplot by grouping columns通过对列进行分组,使用 gnuplot 绘制多个图
【发布时间】:2013-09-27 05:50:25
【问题描述】:

我有一个数据文件,其架构为“对象参数 output1 output2 ...... outputk”。例如。

A 0.1 0.2 0.43 0.81 0.60
A 0.2 0.1 0.42 0.83 0.62
A 0.3 0.5 0.48 0.84 0.65
B 0.1 0.1 0.42 0.83 0.62
B 0.2 0.1 0.82 0.93 0.61
B 0.3 0.5 0.48 0.34 0.15
...

我想创建多个图,每个图对应一个对象,x 轴是参数,系列是输出。目前,我编写了一个 python 脚本,它将每个对象的行转储到不同的文件中,然后调用 gnuplot。有没有更优雅的方式来绘制它?

【问题讨论】:

  • 您想绘制某个对象的所有列吗? output1 vs parameter,output2 vs parameter,... outputk vs parameter 的每个组合都有一行?您是否知道列数,还是应该自动确定?在任何情况下,您都可以即时进行处理,而不是将其保存到临时文件中:plot '< python myscript.py'plot '< python mybetterscript.py --obj A'

标签: linux plot gnuplot octave


【解决方案1】:

你正在寻找这个:

plot 'data.txt' using (strcol(1) eq "A" ? $2 : 1/0):4 with line

结果:

如果您想为每个对象创建绘图:

do for [object in "A B"] {
  reset
  set title sprintf("Object %s",object)
  plot 'data.txt' using (strcol(1) eq object ? $2 : 1/0):4 notitle with line
  pause -1
}

只需按Enter 即可查看下一个情节。 当然,您也可以将这些绘图导出到文件中。

【讨论】:

  • 这只会为对象“A”创建一个图。不适用于所有对象。
  • 请再次参考do loop的答案。你也可以使用嵌套循环。
猜你喜欢
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多