2016-08-30 9 views
0

私は午前9時半から午後4時まで5分ごとにデータを取得します。ほとんどの日、私はライブの日中のデータをプロットします。しかし、時には私は2日以上言うことができる歴史的なビューをしたい。唯一の問題は、午後4時と午前9時半に、私はちょうど2つのデータ点を結ぶ線を得ることです。そのギャップが消えてほしいです。私のコードと起こっていることの例は以下の通りです。PythonのMatplotlibより大きい無視時間ギャップ

fig = plt.figure() 
plt.ylabel('Bps') 
plt.xlabel('Date/Time') 
plt.title(ticker) 
ax = fig.add_subplot(111) 
myFmt = mdates.DateFormatter('%m/%d %I:%M') 
ax.xaxis.set_major_formatter(myFmt) 
line, = ax.plot(data['Date_Time'],data['Y'],'b-') 

enter image description here

私はそれの上にスクロールすると、私は正確な日付と時刻を見ることができるように時系列としてデータを保存しておきたいです。

+0

ベストプラクティスではないかもしれませんが、午前9時から午後4時までしか関心がないので、プロットしているデータのうち午後4時から午後9時までをフィルタリングできませんでしたか? – Abdou

+0

その時系列プロットので、matplotlibは自動的にその間に入ります。それは私のデータではなく、2つのポイントを結ぶ単なるラインです。 –

+0

ありがとうございます。 [this](http://stackoverflow.com/questions/5656798/python-matplotlib-is-there-a-way-to-make-a-discontinuous-axis)線とその対応する軸の領域が消えるのを助けるかもしれませんが、それはあなたが何をしているのか正確には分からないかもしれません。 – Abdou

答えて

1

あなたはパンダオブジェクトを使用しているようですので、参考にしてください。 data['Date_Time']の午後4時から午前9時までの間に任意の時間を除外したとすると、インデックスはdata.reset_index()でリセットされます。その整数インデックスをmatplotlibがtimeseriesをプロットするために実際に使用するフードアンダーフードインデックスとして使用したいと思うでしょう。 this demo caseのように、plt.xticks()で目盛りのラベル自体を手動で変更できます。まとめると、私はそれがこのようなものになると期待します:

data = data.reset_index(drop=True) # just to remove that pesky column 

fig, ax = plt.subplots(1,1) 
ax.plot(data.index, data['Y']) 
plt.ylabel('Bps') 
plt.xlabel('Date/Time') 
plt.title(ticker) 
plt.xticks(data.index, data['Date_Time']) 

私はこれを投稿した直後に最後の声明に気付きました。残念ながら、この「解決策」はインタラクティブな図の「x」変数を追跡しません。つまり、時間軸のラベルはズームに合わせて調整されますが、カーソル位置で時間を知ることはできません。そのため、図の一番下から眼球を動かさなければなりません。 :/

+0

私はこれに似た何かを使用しましたが、実際にはx値を日付時刻として追跡する機能が必要でした。 –

関連する問題