【问题标题】:Printing Only certain Rows from a CSV File in GNUPlott在 GNUPlott 中仅打印 CSV 文件中的某些行
【发布时间】:2015-03-20 19:32:27
【问题描述】:

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

我试图在 Python 中以编程方式执行的操作是使用 gnuplot 打印一组图表。

我要解决的具体问题是,我的 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

--这很简单,但足够准确,可以提出解决方案-- - 现在这个 A B C 公式 - 模式可能会有所不同,次数等可能会有所不同,所以我不能假设每三台服务器就是下一个服务器或类似这样的公式 - 所以我需要某种比较或“检查”机制。

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

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

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

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

这个工具的一部分在计算和内存方面非常昂贵对于每个文件 - 销毁文件

如有任何问题,请告诉我 - 或者我需要更好地解释 - 我理解这是一个非常长且具体的问题。我已经阅读了其他来源的文档(这不是很好) - 坦率地说,我将继续使用 tmp 文件方法,直到提出更好的解决方案。

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

谢谢。

【问题讨论】:

    标签: python csv gnuplot


    【解决方案1】:

    我没有做过这样的事情,也没有调查过你的问题,但以防万一:

    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 上给出的第一个答案。您之前可能已经检查过链接,但如果有人偷看这个问题并且不会对您指出的三元运算符有任何问题(在您的简洁描述之后我不明白它的性质),它们可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-02-12
      • 1970-01-01
      • 2019-09-05
      • 2019-05-27
      • 2018-10-21
      • 2011-09-26
      • 2019-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多