2017-12-01 10 views
-4

私は、時系列を棒グラフでプロットしたいと思います。 バーの幅は各バーの開始時間と終了時間です。ラベルとしてのイベントタイプと、バーの高さを示すカウント。 パンダのデータフレームでは、データは次のようになります。Pythonのバーとしての時系列イベントをプロットする

     end      event counts 
start   
2016-10-02 16:58:00  2016-10-02 17:28:00  700  181 
2016-10-03 07:07:00  2016-10-03 07:35:50  800  174 
2016-10-03 07:36:00  2016-10-03 08:05:00  100  175 
2016-10-04 19:47:00  2016-10-04 20:02:00  50  91 
2016-10-05 08:09:00  2016-10-05 08:17:00  100  49 

おかげ

+0

私はこの質問をチェックアウトします:https://stackoverflow.com/questions/42437349/candlestick-plot-from-a-pandas-dataframeを – AtHeartEngineer

+0

私は多くの人がアイデアを持っていると思います。しかし、ここで答えを得るには、あなたが試したことと他のリソースがどれだけあなたを助けてくれなかったかを示す必要があります。これは確かにまっすぐ進む仕事ではありませんので、彼はあなたを助けてくれるでしょう*しかし、あなたのためにすべての仕事をしないでください。まずあなたができることをコーディングして、それを[mcve]として提供します。 – ImportanceOfBeingErnest

+0

[この質問](https://stackoverflow.com/questions/26498627/bar-plot-with-timedelta-as-bar-width)をご覧ください。 – ImportanceOfBeingErnest

答えて

0

私はあなたの質問の権利を取得していますがfill_between()を使用することができればわかりません。私はパンダがあなたが求めていることをすることができるかどうかはわかりません。

多くのデータではないので、結果のプロットはあまり壮観ではありません。

from io import StringIO 
import matplotlib.patches as patches 

# Just preparing the data .. 

data = """   
start,end,event,counts 
2016-10-02 16:58:00,2016-10-02 17:28:00,700,181 
2016-10-03 07:07:00,2016-10-03 07:35:50,800,174 
2016-10-03 07:36:00,2016-10-03 08:05:00,100,175 
2016-10-04 19:47:00,2016-10-04 20:02:00,50,91 
2016-10-05 08:09:00,2016-10-05 08:17:00,100,49 
""" 

df = pd.read_table(StringIO(data), sep=',')  
df.start = pd.to_datetime(df.start) 
df.end = pd.to_datetime(df.end) 

# Plotting .. 

fig = plt.figure(figsize=(16, 4.5)) 
ax = fig.gca() 

for index, r in df.iterrows():  
    x = (r.start.value, r.end.value) 
    h = r.counts  
    ax.fill_between(x, 0, h) 
+0

@downvote何が問題なのですか? – displayname

+0

は正しい方向に向いているようです - ありがとう –

関連する問題