2017-06-07 7 views
0

matplotlibを使ってプロットしたい価格のリストがあります。ここに私のコードです:コメントアウト1行でmatplotsの 'axis'コマンドを使うと私のプロットが消える

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!

この2台のマシン上とコメントし、対応する行をコメントアウトすることによって再現可能です。何か不足していますか?私はコマンドの順番で既に遊んでいた。私は公式のチュートリアルをチェックし、グーグルでやった。問題はあまりにも広がっているようには見えないので、私はあなたのために願っています。

事前に感謝し、私はただばかだと思う。 ^^

編集:問題は解決されましたが、解決策の一部がコメントに含まれています。結論:価格は正しく注文されていませんでした。

+1

明らかに、あなたの 'plt.plot()'は '[0:number_of_times]'から価格に関数としてデータをプロットします。あなたは 'plt.plot()'でもX範囲を正しく指定する必要があります –

答えて

2

@Dmitri Chubarovはコメントで、plt.plot(data)と呼んで、あなたは垂直座標を提供しているだけです。 matplotlibは水平座標がちょうど[0:len(data)]であると仮定しなければなりません。

後で、水平軸を[start_date, end_date]に移動するように指示します。ただし、水平座標がであるため、この範囲内に水平座標を持たないデータポイントはありません。

この作業を効率的に行うには、データに水平座標を指定する必要があります。例えば。 plt.plot(dates, data)datesは、dataと等しい長さの日付のリストです。

+0

ありがとうございます。これはあなたが一度それについて知っていることは明らかです。 私はすべての価格の日付のリストを追加し、それをplot() - 呼び出しに追加しました。 軸は正しくラベル付けされていますが、私のプロットはナットになります。 https://i.imgur.com/gusg9yD.png – Aarkon

+2

データは日付でソートされていますか? – acdr

+0

私は彼らが今まで存在していることを疑っていませんでしたが、それ以上詳しく調べる前に、私はそれを詳しく見ていきます。 ありがとうございました! – Aarkon

関連する問題