【Python】cufflinksで作った2軸グラフの軸タイトルを変更する方法

今回はplotly.subplots.make_subplotsを使わずにcufflinksとdataframe.iplot()を使って作った2軸グラフのタイトルを変更する方法を紹介します。

エラー例の確認

まず今回はmake_subplotsを使わずに作った2軸グラフに編集を加えるため、make_subplotsで作られたことを前提とした編集方法を使うことができません。

データ取得から順に例を使って説明します。
例ではpandas-datareaderで米国の週間平均労働時間のデータを取得して使っています。経済データ取得に関心がある方はこちらの記事を参考にしてください。

まずはデータ取得からPlotlyのドキュメント通りの方法を使った場合のエラー発生までをみてみます。

import pandas_datareader.data as web
import pandas as pd
import cufflinks

df = web.DataReader(['AWHAETP','AWHAEMAN'],'fred',start='2010-01-01')
# pandas-datareaderでグラフにしたいデータ取得。

df.columns = ['Total Private','Manufacturing']

fig = df.iplot(asFigure=True, secondary_y='Manufacturing', title='Average Weekly Hours')
# データフレームをcufflinks、iplotで2軸グラフにする

fig.update_yaxes(title_text='hoge',secondary_y=False)
fig.update_yaxes(title_text='hoge2',secondary_y=True)
# plotlyドキュメントにあるように記述し軸タイトル変更を試みる

fig.show()

上記のコードを実行すると下記のようなエラーが出ます。

In order to reference traces by row and column, you must first use plotly.tools.make_subplots to create the figure with a subplot grid.

「plotly.tools.make_subplotsを使って作ったものでないとダメですよ」とのエラーです。

正しい変更方法

上記のようなエラーを発生させずに軸タイトルを変更するのは非常に簡単です。

    fig.update_layout(yaxis=dict(title='Total Private'),
                      yaxis2=dict(title='Manufacturing')
    )

このようにfig.update_layoutでyaxisとyaxis2のタイトルを変更すればエラーなく変更されます。

最後に出力結果を示して終わります。
(結果例はタイトル変更以外のグリッド線などの編集をいくつか加えています)

Data Source : U.S. Bureau of Labor Statistics via FRED