我想从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'
答案 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()
答案 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(...)
获取字符串标签,因为它看起来“日期”列表不应该是字符串。