2013-03-09 52 views
2

我的品牌新的Gnuplot,並希望能夠繪製一個看起來像這樣的數據量巨大:如何使用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軸上的「violFines」的總數進行繪製。我已經制作了一張圖來說明我在談論這個鏈接時可以訪問的內容:http://i.imgur.com/NtZsZCR.jpg
(對不起,如果我有足夠的聲望點,我會在此頁面上顯示它)。

任何關於此事的幫助都會很棒!謝謝!

回答

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