0

データが次のような csv ファイルから棒グラフを生成したい:

06/14/12    SMB 12104560    8096373.6   1.5     1.08
06/15/12    SMB 10328540    8217192.68  1.26    1.24
06/18/12    SMB 5495294     8232792.78  0.67    0.85

最初の列を x 軸にし、最後の列を y 軸にしたいです。また、可能であれば、最後の 5 行のデータを使用したいだけです。これは私がこれまでに試したことですが、ありがとう

新しいコードを編集:

data = numpy.loadtxt(StringIO(etf + '.csv' ,dtype= [("date", "S8"), ("value", "f8")]) , usecols=(0,-1))
x = numpy.arange(len(data))
pl1.bar(x,data["value"], width = 0.8)
p1.xticks(x+.4, data["date"])
p1.show()

新しいエラー:TypeError: __init__() got an unexpected keyword argument 'dtype'

4

3 に答える 3

2
import numpy as np
from StringIO import StringIO
import pylab as pl

datastr = """06/14/12    SMB 12104560    8096373.6   1.5     1.08
06/15/12    SMB 10328540    8217192.68  1.26    1.24
06/18/12    SMB 5495294     8232792.78  0.67    0.85"""

data = np.loadtxt(StringIO(datastr), 
                  dtype=np.dtype([("date", "S8"), ("value", "f8")]), 
                  usecols=(0,-1))
x = np.arange(len(data))
pl.bar(x, data["value"], width=0.8)
pl.xticks(x+0.4, data["date"])
pl.show()

ここに画像の説明を入力

于 2012-06-22T13:30:15.440 に答える
0

matplotlib についてはわかりませんが、これが問題になる可能性があります。

date.append((col[0])) # <- appending a string

多分あなたは使ってみるべきです

ax.set_xticklabels(...)

文字列ラベルを取得するには、「日付」リストを文字列にしないでください。

于 2012-06-22T13:17:17.390 に答える
0

プロットの目的で、matplotlib を使用することをお勧めします。

棒グラフをプロットする簡単な例があります。使用しているものと非常に似ていますが、最初からやり直すのに役立つ場合があります。

また、正確にどこで TypeError を取得していますか?

最後の 5 つの要素に関しては、Python のリスト スプライシングをいつでも使用できます。list[-5:]

于 2012-06-22T13:12:51.287 に答える