我已经格式化了这个例子的数据:
defaultConfig
基本上是元组列表的列表 - ([[(date,value),...],[(date,value),...]]。我想绘制这些数据,使日期符合x-我的条形图上的轴标签和值将是我的酒吧的高度。实现这一目标的最佳或者更少的时间是什么?感谢任何帮助。提前致谢。
答案 0 :(得分:2)
如果你想要最外面列表的第一个元素的条形图,你应该使用简单的列表推导将你的值输入到列表中,但是要将日期值直接转换为datetime
,你可以做类似的事情。如下所示。如果您需要第二个元素的值,只需将datalist[0]
更改为datalist[1]
。
import datetime
x = [datetime.datetime.strptime(tup[0],"%Y-%m-%d") for tup in datalist[0]]
y = [tup[1] for tup in datalist[0]]
然后只需致电plt.bar()
:
plt.bar(x,y)
plt.show()
要使用datetime
绘制多个条形图,可以执行以下操作:
x1 = [datetime.datetime.strptime(tup[0],"%Y-%m-%d") for tup in datalist[0]]
x2 = [datetime.datetime.strptime(tup[0],"%Y-%m-%d") for tup in datalist[1]]
y1 = [tup[1] for tup in datalist[0]]
y2 = [tup[1] for tup in datalist[1]]
plt.bar(x1,y1,.1,color='blue')
plt.bar([i+datetime.timedelta(.1) for i in x2],y2,.1,color='red')
plt.show()
如果你不知道你需要多少bar
,你只需要在for循环中显示最后显示的代码,将数据存储在列表列表中(例如,x4是xarr 3),类似这样:
xarr = [x1,x2]
yarr = [y1,y2]
for i in range(len(datalist)):
plt.bar([j+datetime.timedelta((i-1)*.1) for j in xarr[i]],yarr[i], width = .1)
plt.show()