Python

【Python】複数のグラフを一括表示する方法hvPlotの使い方・やり方を解説

Python

どうも、月見(@Suzuka14144156)です。

この記事では、hvPlotの使い方・やり方を解説について解説します。

このようなお悩みをお持ちの方におすすめの記事です。

  • PandasのDataFrameからスムーズに可視化したい
  • matplotlib以外の方法が知りたい
  • インタラクティブなグラフが描きたい

なぜhvPlotか?

従来の方法だとmatplolibのsubplotで行うことが多いと思います。

しかし、matplolibの以下の理由より、hvPlotを使った方が便利な場面が多々あります。

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
  • 未確認ですが、matplotlib、bokehやplotlyのインストールが必要かもです
  • Holoviewは、matplot、bokehやplotlyなど好きな可視化ライブラリから大きなコード変更せずに出力可能なラッパーなので、自身の使いたい可視化ライブラリに応じてインストールが必要かもです

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形式で保存できます。

  • HTML形式にすることで、他人に共有するときにグリグリと動かせるインタラクティブなデータを渡せます
renderer = hv.renderer('bokeh')
renderer.save(data_m, 'graph')

本記事の関連の参考書や講座

基本的なPythonのコード知識を学ぶには、以下の書物がオススメです。

Udemyのオンライン講座は、以下がオススメです。

Udemyは買い切りなので、一度購入してしまえば、何度でも閲覧できるのでオススメです。

現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
現役シリコンバレーエンジニアが教えるPython入門!応用では、データ解析、データーベース、ネットワーク、暗号化、並列化、テスト、インフラ自動化、キューイングシステム、非同期処理など盛り沢山の内容です!

まとめ

この記事では、複数のグラフを一括表示する方法hvPlotの使い方・やり方を解説しました。

hvPlotを利用する理由をまとめると以下です。

hvPlotの理由
  • matplotlibのサブプロットは、axes= fig.subplots(2)という具合に設定が面倒
  • pandasのデータフレームから一括で前列のデータを可視化したい
  • インタラクティブなグラフを描きたいがmatplotlibでは不可能

hvPlotを使えば、一行のコードで以下を可視化可能です。

今回の記事は、以上です。

コメント

タイトルとURLをコピーしました