【问题标题】:using gnuplot for drawing multiple graphs使用 gnuplot 绘制多个图形
【发布时间】:2014-06-03 03:07:09
【问题描述】:

我有这样的数据

Date       instance 1, 2, 3, 4, 5, 6
03-09-2013 0 0 1 0 0 1
03-09-2013 0 0 6 0 0 6
03-09-2013 0 0 2 0 0 6
03-09-2013 0 0 3 0 0 6
03-09-2013 0 0 1 0 0 6
03-09-2013 0 0 2 0 0 6
04-09-2013 0 0 4 0 0 4
04-09-2013 0 0 8 0 0 8
04-09-2013 0 0 2 0 0 8
04-09-2013 0 0 3 0 0 4
04-09-2013 0 0 1 0 0 8
04-09-2013 0 0 5 0 0 8

这只是大量数据的样本。每天有 6 列,显示 6 个不同的流程实例。

我必须选择每天的最大实例数并将其绘制在图表上。

像 9 月 3 日的流程 3 有 6 个实例,9 月 4 日有 8 个这样的实例,我必须为每个日期选择最大实例数并绘制一个图表,其中包含 6 条不同的线来描述每个流程的实例。

问题:我正在使用 Shell 脚本编写代码,如何获得每个进程每天的最大实例数。有没有办法建立数据结构并找出答案。或者我需要使用 Python 还是 Perl?如果有,请指导。所有这些脚本语言对我来说都是全新的。

2) 如何使用 gnuplot 进行绘图。例子

03-09-2013 2 0 2 3 0 7
04-09-2013 6 0 4 2 0 12
05-09-2013 7 0 6 1 0 14

我的图表应该在 X 轴上有日期,不。 Y 轴上的过程。每个实例的每一行,6 个实例的 6 行。

【问题讨论】:

  • 这些数据是全部在一个文件中,还是每天分散在一个文件中?
  • 其实分布在多个文件中,但我写了一个脚本将所有数据处理成一个文件。
  • 从您的数据示例中,我看不出您是如何得到的,例如9 月 3 日进程 1 的 6 个实例。是否只是同一日期一列中所有值的总和(并且这一天有更多数据点)? BTW:请使用Ctrl+K(缩进4个空格)来标记数据或代码块。这简化了复制测试。
  • @Christoph 更新问题,这是庞大的数据,只是添加了适当的数据,以便更清楚地理解

标签: shell gnuplot


【解决方案1】:

我可以回答第二个问题(第一部分需要更多信息)。

像这样的数据文件

03-09-2013 2 0 2 3 0 7
04-09-2013 6 0 4 2 0 12
05-09-2013 7 0 6 1 0 14

你可以用它来绘制它

set xdata time
set timefmt "%m-%d-%Y"
plot for [ii=1:6] 'data.dat' using 1:ii title 'Instance '.ii

或者用类似的东西替换plot for

plot 'data.dat' using 1:2 title 'Instance 1', \
'data.dat' using 1:3 title 'Instance 2', \
'data.dat' using 1:4 title 'Instance 3', \
'data.dat' using 1:5 title 'Instance 4', \
'data.dat' using 1:6 title 'Instance 5', \
'data.dat' using 1:7 title 'Instance 6'

【讨论】:

  • 如果我没记错的话,似乎 OP 的日期格式是 "%d-%m-%Y"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多