在GNUPlott中仅打印CSV文件中的某些行

时间:2015-03-20 19:32:28

标签: python csv gnuplot

我有一个非常具体的问题,使用csv文件和GNUPlots。

我在Python中以编程方式进行的操作是使用gnuplots打印一组图形。

我想解决的具体问题是我的csv文件是一组解析数据,从服务器处理,有多列。

在第一列中有一个服务器名称,其他一些我现在不需要关心的列,然后是我的时间列和数据列。

我想要的是每个特定的服务器(让我们称之为A,B和C)获取相应的时间和值数据 - 并将这些数据绘制到一个gnuplot,其中每一行是一个单独的服务器。所以,让我们说数据看起来像这样

服务器时间数据
A ****** T1 *** D1
A ****** T2 *** D2
A ****** T3 *** D3
B ****** T1 *** D1
B ****** T2 *** D2
B ****** T3 *** D3
C ****** T1 *** D1
C ****** T2 *** D2
C ****** T3 *** D3

- 这是简化但准确到足以构成解决方案 - - 现在这个ABC公式 - 模式可以变化,次数等可以变化所以我不能假设任何像每个第三个服务器是下一个服务器或像这样的公式 - 所以我需要某种比较或“检查”机构。

所以我需要在gnuplott中做的是匹配第一列并从该行获取x,y数据,为该文件中的每个服务器实例,并为文件中的每个服务器进行冲洗和重复 - - 所以我对文件中的所有服务器都有时间与数据的对比。

在花了一段时间之后 - 阅读我考虑使用三元运算符的文档但是 - 我遇到的问题是我匹配文本字段 - 然后在csv中按行获取相应的数据。

我的解决方案只是将服务器的csv文件解析为临时文件 - 然后使用gnuplot中的简单绘图列x列方法将每个临时文件中的数据绘制到图中([x:y] )为每个临时文件。我可以系统地命名tmp文件,比如在每个服务器之后, 然后访问每个感觉,假设它具有服务器的名称(或我用来生成tmp文件的任何命名约定)。

我真正需要的是一种通过使用gnuplott机制更优雅地实现这一目标的方法 - 而不必花费内存和计算资源来编写 - 然后解析 - 临时文件。

这个工具的一部分在程序正在进行的其他事情的计算和内存方面是非常昂贵的 - 所以避免进程 - 解析文件 - 创建临时文件 - 绘制临时文件数据会更好对于每个文件 - 销毁文件

让我知道任何问题 - 或者我需要更好地解释 - 我理解这是一个非常长的具体问题。我已经阅读了其他来源的文档(这不是很好) - 坦率地说,我正在推进tmp文件方法,直到提出更好的解决方案。

这是我在stackoverflow上提出的第一个问题!

谢谢。

1 个答案:

答案 0 :(得分:0)

我还没有完成这样的事情并且没有调查过您的问题,但以防它有所帮助:

1)我会追求更多的三元运营商。其他有类似问题的人成功地成功了: gnuplot conditional plotting: plot col A:col B if col C == x 要么 http://kevinhise.blogspot.com/2011/11/gnuplot-rows-conditionally-depending.html

2)我同意临时文件在磁盘空间方面要求更高但计算量更大?不一定太多,更好检查。

这实际上是我在stackoverflow上给出的第一个答案。您之前可能已经检查了这些链接,但万一有人偷看这个问题并且不会遇到您所指出的三元运营商的问题(在您的简明描述后我不明白其性质),他们可能是有帮助的。