【发布时间】: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 上问的第一个问题!
谢谢。
【问题讨论】: