plotlyで折れ線グラフを作成するPythonスクリプトを紹介します。折れ線グラフに関係する設定項目を一覧できるように全て詰め込みました。不要な設定は変更または削除してご利用ください。
なお、下記のスクリプトはplotly.express
を使わないやり方です。
目次
スクリプト全文
import datetime import plotly.graph_objects as go import plotly.io as pio def generate_line_plot_sample(): """ plotlyで折れ線グラフを生成するサンプル。 備忘録として、主要な設定項目を全て活用する。 """ # 可視化するデータのサンプル # 品目 items = [ "りんご", "バナナ", "キウイ" ] # 売上 sales = [ [213, 293, 242, 234], # りんご [291, 272, 311, 298], # バナナ [178, 142, 113, 89], # キウイ ] # 折れ線の色 colors = [ "rgba(238, 51, 0, 255)", #"#EE3300FF", "rgba(238, 204, 0, 255)", #"#EECC00FF", "rgba(0, 221, 51, 255)", #"#00DD33FF" ] # 年月日 dates = [ datetime.datetime(year=2021, month=10, day=1), datetime.datetime(year=2021, month=11, day=1), datetime.datetime(year=2021, month=12, day=1), datetime.datetime(year=2022, month=1, day=1) ] # マーカーの設定 https://plotly.com/python/marker-style/ marker_line = { "color": "black", # 色 "width": 2, # 太さ } markers = [ { # りんご "color": colors[0], # 色 "size": 20, # サイズ "opacity": 0.8, # 透明度 "symbol": "circle", # 形 "line": marker_line, # 線の設定 }, { # バナナ "color": colors[1], # 色 "size": 15, # サイズ "opacity": 0.8, # 透明度 "symbol": "star", # 形 "line": marker_line, # 線の設定 }, { # キウイ "color": colors[2], # 色 "size": 10, # サイズ "opacity": 0.8, # 透明度 "symbol": "diamond", # 形 "line": marker_line, # 線の設定 }, ] # 線の設定 line = { "width": 3, # 太さ } # plotly.graph_objects.Figureの生成 fig = go.Figure() for i in range(3): # 折れ線を追加 fig.add_trace( go.Scatter( name=items[i], # データの名称(凡例に表示) x=dates, # 横軸の値のリスト y=sales[i], # 縦軸の値のリスト text=sales[i], # 折れ線に記載するテキスト marker_color=colors[i], # 折れ線の色 mode="markers+lines", # 線とマーカーの有無 marker=markers[i], # マーカーの設定 line=line, # 線の設定 )) # 横軸の設定 xaxis = { "title": "年月", # 軸ラベル "titlefont": { # 軸ラベルのフォント "size": 14, # サイズ "color": "rgba(80, 80, 80, 255)", # 色 }, "tickangle": 45, # 目盛ラベルの回転 "tickfont": { # 目盛ラベルのフォント "size": 14, # サイズ "color": "rgba(80, 80, 80, 255)", # 色 }, "tick0": "2021-10-01", # 目盛の基準日 "dtick": "M1", # 表示間隔 "tickformat": "%_y年%_m月", # 表示フォーマット "rangeslider": { "visible":True, # 下部のスライダーの表示 }, "rangeselector": { # 表示範囲ボタン "buttons": [ { "count": 2, # 幅 "label": "2m", # ボタンのラベル "step": "month", # 幅の単位 "stepmode": "backward", # 押下時の基準位置 }, { "count": 4, # 幅 "label": "4m", # ボタンのラベル "step": "month", # 幅の単位 "stepmode": "backward", # 押下時の基準位置 }, ] }, } # 縦軸の設定 yaxis = { "title": "売上 [袋]", # 軸ラベル "titlefont": { # 軸ラベルのフォント "size": 14, # サイズ "color": "rgba(80, 80, 80, 255)", # 色 }, "type": "log", # ログスケールに変更 } # グラフのレイアウトを変更 fig.update_layout( title="果物の売上", # タイトル xaxis=xaxis, # 横軸 yaxis=yaxis, # 縦軸 plot_bgcolor="rgba(240, 240, 240, 255)", # 背景色 ) # 表示 config = { "editable": True, # 軸名等を編集可能に "displayModeBar": True, # メニューバーを常に表示 "scrollZoom": True, # スクロール操作でズーム } fig.show( config=config, # 表示設定 ) # HTMLとして出力 # pio.write_html(fig, "fruits.html") # %pip install kaleido # 画像として出力 pio.write_image(fig, "fruits.png") return fig fig = generate_line_plot_sample()
出力結果
上記のスクリプトを実行すると以下の折れ線グラフが出力されます。
上記はwrite_image
で出力した単なる画像ですが、スクリプトやJupyter Notebookなどからfig.show()
を実行するとインタラクティブにグラフを操作することができます。
終わりに
このスクリプトには折れ線グラフに関係しそうな設定項目をなるべく多く詰め込んでみました。細かな設定方法を逐一検索する手間を削減するためです。設定項目の抜け漏れがあれば更新していきたいと思います。
なお、著者は以下のバージョンのライブラリで実行を確認しました。
- plotly==5.5.0
あわせて読みたい

matplotlibで折れ線グラフを作成するための全設定
matplotlibで折れ線グラフを作成するPythonスクリプトを紹介します。このスクリプトには折れ線グラフに関係する設定項目を全て詰め込みました。