2012-06-22 47 views
0

我想生成一个柱状图从CSV文件我的数据是这样的:如何创建CSV条形图的日期为x轴

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'

回答

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

+0

谢谢,但现在我遇到了一个读取csv文件的问题我得到一个错误ValueError:固定类型元组中的无效形状 – Rtrader

+0

通过loadtxt()读取csv ,你刚刚超过文件名:'np.loadtxt(etf +'。csv',dtype = ...)' – HYRY

+0

,dtype应该是'[(“date”,“S8”),('value','f8 ')]' – HYRY

0

对于任何阴谋目的,我会建议使用matplotlib。

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

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

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

+0

我使用matplotlib我不能得到日期为x轴。此外,我得到这一行上的类型错误:ax.bar(date,relative,width = 10) – Rtrader

+0

尝试检查所有数组中的数据类型 - 仅仅是因为csv中的某个数字并不意味着该数据类型不需要转换时读 – petr

+0

我也这样做(date.append((int((col [0]))))它不工作 – Rtrader

0

我不知道matplotlib的想法,但是这可能是问题:

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

也许你应该尝试使用

ax.set_xticklabels(...) 

得到的字符串标签,因为它看起来的“日期”列表不应该是一个字符串。