plotlyで積み上げ棒グラフを作成するPythonスクリプトを紹介します。積み上げ棒グラフに関係する設定項目を一覧できるように全て詰め込みました。不要な設定は変更または削除してご利用ください。
なお、下記のスクリプトはplotly.express
を使わないやり方です。
目次
スクリプト全文
import datetime import plotly.graph_objects as go import plotly.io as pio def generate_stacked_bar_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) ] # plotly.graph_objects.Figureの生成 fig = go.Figure() for i in range(3): # 棒を追加 fig.add_trace( go.Bar( name=items[i], # データの名称(凡例に表示) x=dates, # 横軸の値のリスト y=sales[i], # 縦軸の値のリスト text=sales[i], # 棒に記載するテキスト marker_color=colors[i], # 棒の色 )) # 横軸の設定 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": "linear", # ログスケールに変更する場合は"log" } # グラフのレイアウトを変更 fig.update_layout( title="果物の売上", # タイトル xaxis=xaxis, # 横軸 yaxis=yaxis, # 縦軸 plot_bgcolor="rgba(240, 240, 240, 255)", # 背景色 barmode="stack", ) # 表示 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_stacked_plotly.png") return fig fig = generate_stacked_bar_plot_sample()
出力結果
上記のスクリプトを実行すると以下の積み上げ棒グラフが出力されます。
上記はwrite_image
で出力した単なる画像ですが、スクリプトやJupyter Notebookなどからfig.show()
を実行するとインタラクティブにグラフを操作することができます。
終わりに
このスクリプトには積み上げ棒グラフに関係しそうな設定項目をなるべく多く詰め込んでみました。細かな設定方法を逐一検索する手間を削減するためです。設定項目の抜け漏れがあれば更新していきたいと思います。
なお、著者は以下のバージョンのライブラリで実行を確認しました。
- plotly==5.5.0
あわせて読みたい

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