cufflinksで対話的なplotlyグラフを簡単に作成する方法

今回はcufflinksというライブラリを使って、pandas DataFrameのデータを対話的なplotlyのグラフにする方法をまとめておく。

1. データとライブラリ準備

今回は、pandas-datareaderを使って米国GDPのデータを取得し、それを使いながら、様々なグラフの作成・編集をしてみたいと思う。

まずは、下準備として必要ライブラリのインポートとデータの準備。

データの準備は今回の本題ではないが、pandas-datareaderは本当に便利なので、経済データ取得に関心のある方はぜひ使ってみてください。

import pandas_datareader.data as web
import cufflinks as cf
import pandas as pd
# 使うライブラリをインポート

# ↓はGDPデータの取得のためのもの
NGDPlist = ['GDP','PCEC','GPDI','NETEXP','GCE'] # データコード

# データの取得
df = web.DataReader(NGDPlist,'fred',start='2010-01-01').resample('q',label='right').last()
df = df.pct_change(1).dropna()*4 # 適当に加工しておきます。正確な年率計算はめんどうなので、、
df.columns = ['GDP','PCE','民間投資','純輸出','政府支出・投資']

※データを%表記に直すのを忘れました。グラフの見栄えが良くないですがご了承ください。

2. cufflinksを使ったグラフの作成

取得したデータを使って、まずはシンプルな折れ線グラフを作成してみる。

cufflinksをインポートしておくことで、データフレーム.iplot()とすることでplotlyの対話的グラフを作成することができるようになっています。

それを使ってグラフを作成・表示してみる。

fig = df.iplot(asFigure=True) # asFigure=Trueとすることでplotly 
fig.show() # 作ったグラフを表示させる。

味気ない値だけのグラフだが、簡単に対話的なグラフを作成することができた。

3. 引数の指定とグラフの編集

上記のグラフはただデータをプロットしただけのものであり、タイトルも何もない。
タイトルなどをつけるにはには、引数の指定が必要になる。

タイトルの設定

まずは、タイトルの追加を行って結果をみてみる。

fig = df.iplot(asFigure=True, title='米国名目GDP',yTitle='前期比年率',xTitle='Date')
# title : グラフのタイトルを設定
# yTitle : y軸のタイトルを設定
# xTitle : x軸のタイトルを設定

fig.show()

レイアウト等の変更

テーマの変更、線の太さや種類の変更を行ってみる。

fig = dfr.iplot(asFigure=True,title='US Nominal GDP',yTitle='Annualized QoQ',xTitle='Date',
                theme='solar',dash=['solid','dashdot','dashdot','dashdot','dashdot'],width=1.8)
'''
theme : テーマの指定。 solarやwhite、ggplotなどの種類がある。
dash : solid, dash, dashdot, dotから指定。 dash=dashdotのようにすると全てdashdotになる。
       リストや辞書でデータごとに指定することも可能。
width : 折れ線グラフの線の太さを指定。

さらに折れ線グラフの形状を線+マーカーに変更し、マーカーサイズにも変更を加えてみる。

fig = dfr.iplot(asFigure=True,title='US Nominal GDP',yTitle='Annualized QoQ',xTitle='Date',
                theme='solar',dash=['solid','dashdot','dashdot','dashdot','dashdot'],width=1.8,
                mode='lines+markers',size=10)

'''
mode : 折れ線グラフにマーカーやテキスト情報を追加したり、線からマーカーに変更する場合に使用。
       lines, markers, lines+markers, lines+text, markers+text, lines+markers+text から選択。
size : マーカーのサイズを変更する場合に使用する。
symbol : マーカーの形を変更する場合に使用。circle, circle-dot, diamond, squareなどから選ぶ。

4. 第二軸の追加設定とサブプロット

第二軸とサブプロットについては、追加設定方法だけ示します。

第二軸の設定

fig = df.iplot(asFigure=True, secondary_y='列名')
'''
secondary_y : 列名や列名の入ったリストを渡すことで、第二軸で扱うデータを指定。
secondary_y_title : 第二軸のタイトルを設定する場合に使用
'''

サブプロットの設定

fig = df.iplot(asFigure=True, subplots=True)
'''
subplots : Trueにすれば、各データごとにチャートが作成される
shape : (rows,cols)の形式で指定するこで、列と行の数を指定することができる。

以上で基本的なcufflinksを使ったplotlyのグラフ作成方法は終わりです。

他にも回帰線を表示したりといった様々なことができますが、基本的には上記の使用方法だけで足りるかと思います。

(棒グラフ等の設定は追加で覚える必要があることもあるかもしれませんが)