どうも、月見(@Suzuka14144156)です。
この記事では、hvPlotの使い方・やり方を解説について解説します。
このようなお悩みをお持ちの方におすすめの記事です。
- PandasのDataFrameからスムーズに可視化したい
- matplotlib以外の方法が知りたい
- インタラクティブなグラフが描きたい
なぜhvPlotか?
従来の方法だとmatplolibのsubplotで行うことが多いと思います。
しかし、matplolibの以下の理由より、hvPlotを使った方が便利な場面が多々あります。
- matplotlibのサブプロットは、axes= fig.subplots(2)という具合に設定が面倒
- pandasのデータフレームから一括で前列のデータを可視化したい
- インタラクティブなグラフを描きたいがmatplotlibでは不可能
このような悩みを解決するのにhvPlotがオススメです。
本記事のゴール
- PandasのDataFrameから以下のグラフを1行のコードで描くことができます。
線グラフの場合
散布図の場合
hvPlotとは?
- pandasなどのデータからHoloViewというラッパーを介してグラフを可視化するライブラリ
参考:hvPlot
hvPlotのインストール
Anacondaを使用する場合
conda install -c pyviz hvplot
PyPLの場合
pip install hvplot
hvPlotで複数のグラフを一括表示する方法
今回は、米国の経済指標であるCPIと政策金利とビットコインの3つの価格を取得し、可視化する例で示します。
データを取得するのに、pandas_datareaderを使います。
インストール方法は以下です。
pip install pandas_datareader
では、本題のコードへ。
import pandas as pd
from pandas_datareader import data as pdr
import datetime
#チャートの取得
tickers = ['CBBTCUSD','CPIAUCNS','FEDFUNDS']
#取得開始日を入力
start = "2021-01-02"
#取得終了日を入力
end = datetime.date.today()
#経済指標を取得
data = pdr.DataReader(tickers, 'fred', start, end)
#月足に変換
data_m = data.resample("M").mean()
これでデータ取得できます。
以下のコードで可視化することができます。
import hvplot.pandas
data_m.hvplot(y=data_m.columns,
width=400, height=300, subplots=True, shared_axes=False).cols(2)
複数のグラフを一括表示する方法(縦軸を固定する方法)
縦軸の値が同じ指標の場合は以下のコードを使います。
import hvplot.pandas
data_m.hvplot(y=data_m.columns,
width=400, height=300, subplots=True, shared_axes=True).cols(2)
今回用いたデータは、CBBTCUSDのみが、大きな値なので他の値が0付近につぶれてしまっています。
hvPlotで複数のグラフを一括表示する方法(散布図の場合)
散布図の場合の場合は、seabornのペアプロットを使ったりします。
今回は、例えばx軸の値を一つに固定し、複数のy軸を選択したい場合を想定します。
data_m.hvplot.scatter(x='CBBTCUSD', y=data_m.columns,
width=400, height=300, subplots=True, shared_axes=False,alpha=0.5).cols(2)
hvPlotの出力の保存
保存は、以下のコードでHTML形式で保存できます。
renderer = hv.renderer('bokeh')
renderer.save(data_m, 'graph')
本記事の関連の参考書や講座
基本的なPythonのコード知識を学ぶには、以下の書物がオススメです。
Udemyのオンライン講座は、以下がオススメです。
Udemyは買い切りなので、一度購入してしまえば、何度でも閲覧できるのでオススメです。
まとめ
この記事では、複数のグラフを一括表示する方法hvPlotの使い方・やり方を解説しました。
hvPlotを利用する理由をまとめると以下です。
- matplotlibのサブプロットは、axes= fig.subplots(2)という具合に設定が面倒
- pandasのデータフレームから一括で前列のデータを可視化したい
- インタラクティブなグラフを描きたいがmatplotlibでは不可能
hvPlotを使えば、一行のコードで以下を可視化可能です。
今回の記事は、以上です。
コメント