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 に答える