如何使用日期作为x轴从csv创建条形图

时间:2012-06-22 13:09:11

标签: python matplotlib

我想从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'

3 个答案:

答案 0 :(得分: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()

enter image description here

答案 1 :(得分:0)

对于任何绘图目的,我建议使用matplotlib。

有一个简单的example to plot a bar chart - 与您正在使用的非常相似,但有时它有助于从头开始。

另外,你究竟在哪里得到TypeError?

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

答案 2 :(得分:0)

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

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

也许你应该尝试使用

ax.set_xticklabels(...)

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