2017-02-03 29 views
2

私は、日付をX軸、時間をY軸としてプロットしたいいくつかのデータセットを持っています。私はジュピターノートブックで働いています。グラフ化の日付とプロットの時間

from datetime import date, time 
from plotly import offline as py 
from plotly.graph_objs import Scatter, Data 
py.init_notebook_mode(connected=True) 

meetings = Scatter(
    x=[date(2017, 1, 1), date(2017, 1, 3), date(2017, 1, 3)], 
    y=[time(8, 0, 0), time(12, 0, 0), time(16, 0, 0)], 
    text=['work meeting 1', 'work meeting 1', 'work meeting 1'], 
    mode='markers' 
) 

workouts = Scatter(
    x=[date(2017, 1, 1), date(2017, 1, 2), date(2017, 1, 2)], 
    y=[time(7, 30, 0), time(14, 30, 0), time(17, 0, 0)], 
    text=['workout 1', 'workout 2', 'workout 3'], 
    mode='markers' 
) 

data = Data([meetings, workouts]) 
py.iplot(data) 

Iが得る結果はこれです: result X軸は同様に時間を含み、Y軸がない下から上へ、挿入されたデータの順に進みます。レンジ/ドメインを修正してみたことはありませんでした。 help pageで見たことから、時間オブジェクトはサポートされていません。 このタイプのプロットを作成する方法はありますか?

答えて

5

時間をプロットするためには、2つのことを行う必要があるでしょう:

  • datetimeオブジェクト

に日付にy軸typetickformat%H:%M

  • 変換するためにtimeオブジェクトを設定します。私たちは同じ日に起きたyaxisのすべてをふりまとっただけですが、私たちは時を報告します。

    enter image description here

    import plotly 
    import datetime as dt 
    
    meetings = plotly.graph_objs.Scatter(
        x=[dt.date(2017, 1, 1), dt.date(2017, 1, 3), dt.date(2017, 1, 3)], 
        y=[dt.time(8, 0, 0), dt.time(12, 0, 0), dt.time(16, 0, 0)], 
        text=['work meeting 1', 'work meeting 1', 'work meeting 1'], 
        mode='markers' 
    ) 
    
    workouts = plotly.graph_objs.Scatter(
        x=[dt.date(2017, 1, 1), dt.date(2017, 1, 2), dt.date(2017, 1, 2)], 
        y=[dt.time(7, 30, 0), dt.time(14, 30, 0), dt.time(17, 0, 0)], 
        text=['workout 1', 'workout 2', 'workout 3'], 
        mode='markers' 
    ) 
    
    for d in [meetings, workouts]: 
        for i, t in enumerate(d.y): 
         d.y[i] = dt.datetime.combine(dt.date(2017, 1, 1), t) 
    
    layout = plotly.graph_objs.Layout(yaxis={ 
        'type': 'date', 
        'tickformat': '%H:%M' 
        } 
    ) 
    
    fig = plotly.graph_objs.Figure(
        data=plotly.graph_objs.Data([meetings, workouts]), 
        layout=layout 
    ) 
    plotly.offline.plot(fig) 
    
  • 関連する問題