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。

有一个简单的示例来绘制条形图- 与您使用的非常相似,但有时它有助于从头开始。

另外,你到底是从哪里得到 TypeError 的?

关于最后 5 个元素,可以随时使用 python 的列表拼接,例如list[-5:]

于 2012-06-22T13:12:51.287 回答
0

我不知道 matplotlib 但这可能是问题所在:

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

也许你应该尝试使用

ax.set_xticklabels(...)

要获取字符串标签,因为它看起来“日期”列表不应该是字符串。

于 2012-06-22T13:17:17.390 回答