我有一个我想用matplotlib绘制的价格列表,如果我这样做,一切都很好。这是我的代码:
def plot_prices_and_events(prices, buy=None, sell=None):
data = []
max_price = 0
min_price = sys.maxint
values = prices.get_values()
for price in values:
current_price = price[1]
data.append(current_price)
if current_price > max_price:
max_price = price[1]
if current_price < min_price:
min_price = current_price
plt.ylabel('Bitcoin price in EUR')
plt.xlabel('Date')
start_date = datetime.datetime.fromtimestamp(values[0][0])
end_date = datetime.datetime.fromtimestamp(values[-1][0])
plt.plot(data)
#plt.axis([start_date, end_date, min_price, max_price])
if buy is not None:
plt.plot(buy)
if sell is not None:
plt.plot(sell)
plt.show()
然而,如果我尝试设置x轴的比例,从而取消注释线,轴会正确显示,但我的情节会消失:
这可以在两台机器上重现,并通过注释和取消注释相应的行。我错过了什么吗?我已经玩过命令的顺序,我检查了官方教程并做了一些谷歌搜索。这个问题似乎没有太大的影响,所以我希望你们这些人。
提前致谢,我希望我只是愚蠢。 ^^
编辑:问题已经解决,但解决方案部分可以在评论中找到。底线:价格没有正确订购。
答案 0 :(得分:2)
正如@Dmitri Chubarov在评论中所说,通过致电plt.plot(data)
,您只提供垂直坐标。 matplotlib然后必须假设水平坐标只是[0:len(data)]
。
您稍后会告诉它将水平轴移动到[start_date, end_date]
。但是,没有一个数据点在此范围内具有水平坐标,因为水平坐标为[0:len(data)]
。
您必须为您的数据提供横向坐标,以便更好地完成这项工作。例如。 plt.plot(dates, data)
,其中dates
是与data
等长的日期列表。