Python 使用Matplot';轴';命令使我的阴谋消失

Python 使用Matplot';轴';命令使我的阴谋消失,python,matplotlib,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

我有一个价格列表,我想用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()
def plot_prices_和_事件(prices,buy=None,sell=None):
数据=[]
最高价格=0
最小价格=sys.maxint
值=价格。获取值()
以价值计算的价格:
当前价格=价格[1]
数据追加(当前价格)
如果当前价格>最高价格:
最高价格=价格[1]
如果当前价格<最低价格:
最低价格=当前价格
plt.ylabel(“比特币欧元价格”)
plt.xlabel(“日期”)
start\u date=datetime.datetime.fromtimestamp(值[0][0])
end_date=datetime.datetime.fromtimestamp(值[-1][0])
plt.绘图(数据)
#打印轴([开始日期、结束日期、最低价格、最高价格])
如果“购买”不是“无”:
plt.plot(购买)
如果sell不是None:
地块(出售)
plt.show()
注释掉一行后,一切正常:

但是,如果我尝试设置x轴的比例,从而取消对线的注释,则轴将正确显示,但我的绘图将消失:

这可以在两台机器上通过注释和取消注释相应的行进行复制。我错过什么了吗?我已经熟悉了命令的顺序,我查看了官方教程并用谷歌搜索了一下。这个问题似乎并没有扩散太远,所以我希望你们这些人

提前谢谢,我希望我只是个傻瓜^^


编辑:问题已经解决,但部分解决方案可以在评论中找到。一句话:价格顺序不正确。

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

您稍后会告诉它将水平轴移动到
[开始日期,结束日期]
。但是,没有任何数据点在此范围内具有水平坐标,因为水平坐标是
[0:len(数据)]


您还必须为您的数据提供水平坐标,以使其更好地工作。例如,
plt.plot(dates,data)
,其中
dates
是一个与
data
长度相等的日期列表,正如@Dmitri Chubarov在一篇评论中所说,通过调用
plt.plot(data)
,您只提供了垂直坐标。matplotlib必须假设水平坐标正好是
[0:len(数据)]

您稍后会告诉它将水平轴移动到
[开始日期,结束日期]
。但是,没有任何数据点在此范围内具有水平坐标,因为水平坐标是
[0:len(数据)]


您还必须为您的数据提供水平坐标,以使其更好地工作。例如,
plt.plot(dates,data)
,其中
dates
是一个与
data
长度相等的日期列表,显然,您的
plt.plot()
将数据作为从
[0:次数]
到价格的函数进行打印。您还必须在
plt.plot()
中正确指定X范围。显然,您的
plt.plot()
将数据作为从
[0:number of\u times]
到价格的函数进行打印。您还必须在
plt.plot()中正确指定X范围
谢谢。一旦你知道了,这似乎是显而易见的。我为每个价格添加了一个日期列表,并将其添加到plot()-调用中。现在轴的标记正确了,但我的图变得疯狂了:你确定你的数据是按日期排序的吗?我之前并不怀疑它们是这样的,但在进一步讨论之前,我会仔细研究一下。非常感谢。谢谢你们两位。一旦你知道了,这似乎是显而易见的。我为每个价格添加了一个日期列表,并将其添加到plot()-调用中。现在轴的标记正确了,但我的图变得疯狂了:你确定你的数据是按日期排序的吗?我之前并不怀疑它们是这样的,但在进一步讨论之前,我会仔细研究一下。非常感谢。