使用matplots' axis'命令使我的情节消失

时间:2017-06-07 09:32:43

标签: python matplotlib

我有一个我想用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()

一行注释掉,一切都很好: plot with plane axis

然而,如果我尝试设置x轴的比例,从而取消注释线,轴会正确显示,但我的情节会消失:

no more plot!

这可以在两台机器上重现,并通过注释和取消注释相应的行。我错过了什么吗?我已经玩过命令的顺序,我检查了官方教程并做了一些谷歌搜索。这个问题似乎没有太大的影响,所以我希望你们这些人。

提前致谢,我希望我只是愚蠢。 ^^

编辑:问题已经解决,但解决方案部分可以在评论中找到。底线:价格没有正确订购。

1 个答案:

答案 0 :(得分:2)

正如@Dmitri Chubarov在评论中所说,通过致电plt.plot(data),您只提供垂直坐标。 matplotlib然后必须假设水平坐标只是[0:len(data)]

您稍后会告诉它将水平轴移动到[start_date, end_date]。但是,没有一个数据点在此范围内具有水平坐标,因为水平坐标为[0:len(data)]

您必须为您的数据提供横向坐标,以便更好地完成这项工作。例如。 plt.plot(dates, data),其中dates是与data等长的日期列表。