【问题标题】:Gnuplot plot data from different files来自不同文件的 Gnuplot 绘图数据
【发布时间】:2014-04-24 11:54:46
【问题描述】:

我正在寻找一种将不同文件中的数据绘制到一个图表中的方法。

我正在测试解决问题的不同方法。我有一些参数,我试图得出结果与这些参数的关系。我对正在比较的不同解决方案进行了一些测试,并使用不同的参数重做了几次。

所以我有几个看起来像这样的 .csv 文件。

       test1    test2    test3    test4   ...
sol1     1        1        1        1 
sol2     1        1        1        1 
sol3     1        1        1        1 
sol4     1        1        1        1 
...

(这些当然是用真实数据填充的,而不仅仅是 1)

我想绘制一个图表,其中 Y 轴是(例如)test1/sol1 的结果,x 轴绘制不同的参数值(不同的 .csv 文件)。

我希望我已经明确了我要创建的内容。

我希望有一种方法可以直接在 gnuplot 中执行此操作。文件结构是这样的,为了创建一些其他的图表,所以我真的不想改变它。

我读到了连接两个文件的可能性,但我真的不认为这有多大用处。

编辑:(感谢 Christoph)我想绘制单元格 test1/sol1 中的值与我的参数。每个文件的参数都在变化。所以我需要为每个文件读取 1 个数据点。

最后,我想在一张图中为不同的解决方案绘制这些信息。所以对于细胞 test1/sol1, test1/sol2, test1/sol3,...

在下面的示例中,x 轴是变化参数,Y 轴是“test1”列中相应单元格中的值,不同的行对应不同的解决方案。


(来源:googlecode.com

(来自谷歌的随机图片)

我希望现在我想要实现的目标更清楚了。

【问题讨论】:

  • 我不明白你想绘制什么:test1/sol1 应该在 y 轴上是什么?您想绘制单元格test1/sol1 中的值与相应的参数(包含在文件名中吗?)?您可以使用 plot for [file in filelist] 之类的迭代来做到这一点,但这不适用于线条,仅适用于框或点等。此外,可能的解决方案取决于您想要包含在图中的其他值:应该 sol1出现在某处或test1?参数值等呢
  • 嗨克里斯托夫。感谢您的回复。我确实想绘制单元格 test1/sol1 中的值与参数。参数只是 1,2,3,4...(包含在文件名中)。单元格中的值是百分比,但这并不重要。我想使用线条,因为我想在同一张图上放置多个图(test1/sol2、test1/sol3、...)来比较它们。
  • 好的,因为你不能用线连接来自不同文件的点。这就是为什么需要连接多个文件的要点之一。或者你在set table 内部绘图,然后重新绘制它。

标签: csv graph gnuplot


【解决方案1】:

可能不是最好的解决方案,因为我对 Gnuplot 还不是很有经验,但我设法做到了:

sol1 = "< (cat param0.csv param1.csv param2.csv | grep sol1)"
plot sol1 using 2 with lines title "sol1"

所以cat这会将具有不同参数的文件一个接一个地放置,然后我只保留带有sol1的行。然后我只绘制第一列(test1 的值)

我只是对不同的解决方案重复此操作,并使用复制粘贴(由于解决方案的数量是固定的,这似乎是最简单的方法)。

【讨论】:

  • 你可以使用 gnuplot 迭代来缓解这个问题,比如sol(x) = sprintf('&lt; (cat param0.csv param1.csv param2.csv) | grep sol%d', x); plot for [i=1:5] sol(i) using 2 with lines title sprintf('sol%d', i)
  • 酷!我不知道您可以在命令中使用 gnuplot 变量。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2015-08-12
  • 2023-03-11
  • 1970-01-01
相关资源
最近更新 更多