2

我是 Gnuplot 的新手,希望能够绘制大量数据,如下所示:

Description violFine state
"Red Light Violation" $75.00 MD
"No Stop/Park Handicap" $502.00 MD
"Red Light Violation" $75.00 MD
"No Stop/Park Handicap" $502.00 MD
"Red Light Violation" $75.00 MD
"Red Light Violation" $75.00 MD
"Red Light Violation" $75.00 VA
"All Other Stopping or Parking Violations" $32.00 MD
"Red Light Violation" $75.00 MD
"Red Light Violation" $75.00 MD

如您所见,第一行是列的名称,我在“描述”列中有许多重复的字符串值。我想要做的是将每个唯一“描述”的所有“violFine”数字相加,并将其与 x 轴上的“描述”和 y 轴上的“violFine”总数一起绘制。我制作了一个图表来说明我在说什么可以通过这个链接访问:http: //i.imgur.com/NtZsZCR.jpg
(对不起,如果我有足够的声誉,我会在这个页面上提供它点)。

任何有关这方面的帮助都会很棒!谢谢!

4

1 回答 1

1

这种数据处理任务不太适合 gnuplot。幸运的是,gnuplot 很乐意让您使用其他工具来处理数据,然后通过管道输入结果。在这里,我将使用python

from collections import defaultdict
import csv
import sys

d = defaultdict(list)
with open(sys.argv[1]) as fin:
    next(fin)  #remove the first line which doesn't contain data
    reader = csv.reader(fin,delimiter=' ',quotechar='"')
    for row in reader:
        d[row[0]].append(float(row[1][1:]))

for k,v in d.items():
    print '"{0}"'.format(k),sum(v)

现在在 gnuplot 中,您可以将其绘制为:

plot '< python script.py datafilename' using (column(0)):2:xtic(1) with lines
于 2013-03-10T00:44:25.040 回答