1

私はPythonとmatplotlibの初心者ですが、学ぼうとしています! matplotlib を使用して、頻度のある日付を含む CSV からいくつかの単純なデータをプロットしたいと思います。日付を含む X 軸と頻度を含む Y 軸。CSV からのデータの例:

2011/12/15,5
2011/12/11,4
2011/12/19,2

「matplotlib.sf.net/examples」をチェックアウトしましたが、すべてのテスト データが http get からダウンロードされているようです。誰かが(おそらくCSVリーダーを使用して)データを読み込んでチャートにデータを表示する方法のサンプルコードを教えていただければ幸いです。

ありがとうございました!!

4

2 に答える 2

2

多分あなたは次のようなものを探します:

import csv
import datetime as dt
import matplotlib.pyplot as plt

arch = 'C:\\Python26\\programas\\test.csv'
data = csv.reader(open(arch))

data = [(dt.datetime.strptime(item, "%Y/%m/%d"), float(value)) for item, value in data]
data.sort()
[x, y] = zip(*data)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y)

ax.grid(True)
fig.autofmt_xdate()

plt.show()

ここに画像の説明を入力

于 2012-04-17T23:42:36.263 に答える
1

コードをできるだけシンプルにしようとしましたが、これは決してエレガントではありませんが、次のようになります。

import csv
import matplotlib.pyplot as plt

### Making test CSV file ###
data = [['2011/12/15,5'],['2011/12/11,4'],['2011/12/19,2'],['2011/12/16,3'],['2011/12/20,8'],['2011/12/14,4'],['2011/12/10,10'],['2011/12/9,7']]
with open('test.csv', 'wb') as f:
    writer = csv.writer(f)
    for i in data:
        writer.writerow(i)


### Extract data from CSV ###
with open('test.csv', 'rb') as n:
    reader = csv.reader(n)
    dates = []
    freq = []
    for row in reader:
        values = row[0].split(',')
        dates.append(values[0])
        freq.append(values[1])          


### Do plot ###
false_x = [x for x in range(len(dates))]
plt.plot(false_x,freq, 'o-')
plt.xticks(range(len(dates)), (dates), rotation=45)
# plt.axis([xmin, xmax, ymin, ymax]) - sets axes limits on graph
plt.axis([-1, 8, 0, 11])
plt.show()

これにより、次のようになります。

ここに画像の説明を入力

于 2012-04-17T23:33:36.430 に答える