データにあふれた現代において、情報を正確に理解し、効果的に伝えることは、あらゆる分野で重要性を増しています。膨大なデータの山から意味を見出し、価値を引き出すためには、データ可視化が欠かせません。
データ可視化とは、データをグラフやチャートなどの視覚的な形式に変換することで、隠れたパターンや傾向を明らかにするプロセスです。複雑な情報を直感的に理解できる形にすることで、データ分析をより深く、よりスムーズに進めることができます。
そして、データ可視化をより効果的に、より魅力的に行うための強力なツールが、Plotlyです。Pythonでインタラクティブなグラフを作成できるPlotlyは、多様なグラフとチャート、豊富なカスタマイズオプション、そしてアニメーション機能などを備え、データに命を吹き込みます。
本記事では、Plotlyで描画できる様々なグラフとチャートを紹介します。
Contents
- Plotlyとは?
- データ可視化の重要性
- なぜPlotlyを選ぶのか?
- Plotlyライブラリをインストール
- 基本的なグラフとチャート
- 折れ線グラフ (Line Plot)
- 散布図 (Scatter Plot)
- バブルチャート (Bubble Plot)
- ヒストグラム (Histogram)
- バーチャート (Bar Chart)
- 円グラフ (Pie Chart)
- 面グラフ (Area Plot)
- 統計的なグラフとチャート
- 箱ひげ図 (Box Plot)
- バイオリンプロット (Violin Plot)
- ヒートマップ (Heatmap)
- 散布図行列 (Scatterplot Matrix)
- 相関行列 (Correlation Matrix)
- Plotlyで階層的なデータを見える化
- ツリーマップ (Treemap)
- サンバーストチャート (Sunburst Chart)
- まとめ
Plotlyとは?
データ可視化の重要性
データにあふれた現代において、情報を正確に理解し、効果的に伝えることは、あらゆる分野で重要性を増しています。膨大なデータの山から意味を見出し、価値を引き出すためには、データ可視化が欠かせません。
データ可視化とは、データをグラフやチャートなどの視覚的な形式に変換することで、隠れたパターンや傾向を明らかにするプロセスです。複雑な情報を直感的に理解できる形にすることで、データ分析をより深く、よりスムーズに進めることができます。
そして、データ可視化をより効果的に、より魅力的に行うための強力なツールが、Plotlyです。Pythonでインタラクティブなグラフを作成できるPlotlyは、多様なグラフとチャート、豊富なカスタマイズオプション、そしてアニメーション機能などを備え、データに命を吹き込みます。
なぜPlotlyを選ぶのか?
Plotlyには、他のデータ可視化ライブラリにはない、多くの魅力的な特徴があります。
インタラクティブ性
Plotlyで作成されたグラフは、ズーム、パン、ホバーなどの操作によって動的に探索することができます。これにより、データの細部まで深く理解することができます。
多様なグラフとチャート
Plotlyは、折れ線グラフ、散布図、棒グラフ、円グラフなど、基本的なグラフはもちろんのこと、ヒートマップ、箱ひげ図、バイオリンプロットなど、統計的なグラフも豊富にサポートしています。
カスタマイズ性
Plotlyでは、グラフの色、サイズ、ラベルなどを自由に設定することができます。これにより、自分の好みに合わせた、見やすく美しいグラフを作成することができます。
アニメーション
データの変化をアニメーションで表現することができます。時間軸に沿ったデータの推移を視覚的に表現するのに最適です。
地図との連携
地図上にデータをプロットすることができます。地理空間的な情報を可視化するのに役立ちます。
これらの特徴により、Plotlyはデータ分析、機械学習、科学技術計算、ビジネスインテリジェンスなど、様々な分野で活用されています。
Plotlyライブラリをインストール
Plotlyを始めるには、まずライブラリをインストールする必要があります。
pip install plotly
基本的なグラフとチャート
折れ線グラフ (Line Plot)
折れ線グラフは、時系列データや連続的なデータの変化を表現するのに最適です。
Plotlyでは、plotly.expressモジュールを使うことで、簡単に折れ線グラフを作成できます。
以下、コードです。
import plotly.express as px df = px.data.gapminder().query("country=='Canada'") fig = px.line( df, # DataFrame x="year", # 横軸 y="lifeExp", # 縦軸 title='カナダの平均寿命の推移', # タイトル labels={ "year": "年", "lifeExp": "平均寿命" } # ラベル ) fig.show()
以下、実行結果です。
散布図 (Scatter Plot)
散布図は、2つの変数の関係性を可視化するのに役立ちます。
Plotlyでは、plotly.express.scatter関数を使って散布図を作成できます。
以下、コードです。
import plotly.express as px df = px.data.iris() fig = px.scatter( df, # DataFrame x="sepal_width", # 横軸 y="sepal_length", # 縦軸 color="species", # カラー title='花の幅と長さの関係', # タイトル labels={ "sepal_width": "幅", "sepal_length": "長さ" } # ラベル ) fig.show()
以下、実行結果です。
バブルチャート (Bubble Plot)
バブルチャートは、散布図に第3の変数をバブルの大きさで表現したグラフです。
Plotlyでは、plotly.express.scatter関数のsize引数に第3の変数を指定することで、バブルチャートを作成できます。
以下、コードです。
import plotly.express as px df = px.data.gapminder() fig = px.scatter( df.query("year==2007"), # DataFrame x="gdpPercap", # 横軸 y="lifeExp", # 縦軸 size="pop", # サイズ color="continent", # カラー hover_name="country", # マウスオーバーラベル log_x=True, # 横軸が対数スケール title="2007年のGDPと平均寿命の関係", # タイトル size_max=60, # サイズの最大値 labels={ "gdpPercap": "1人当たりGDP", "lifeExp": "平均寿命", "continent": "大陸", "pop": "人口" }, # ラベル ) fig.show()
以下、実行結果です。
ヒストグラム (Histogram)
ヒストグラムは、データの分布を可視化するのに使用されます。
Plotlyでは、plotly.express.histogram関数を使ってヒストグラムを作成できます。
以下、コードです。
import plotly.express as px df = px.data.tips() fig = px.histogram( df, # DataFrame x="total_bill", # 横軸 nbins=30, # ヒストグラムの分割数 title="請求額のヒストグラム", # タイトル labels={"total_bill": "請求額"} # ラベル ) fig.show()
以下、実行結果です。
バーチャート (Bar Chart)
バーチャートは、カテゴリ別のデータの値を比較するのに便利です。
Plotlyでは、plotly.express.bar関数を使ってバーチャートを作成できます。
以下、コードです。
import plotly.express as px df = px.data.gapminder().query("continent == 'Oceania'") fig = px.bar( df, # DataFrame x='year', # 横軸 y='pop', # 縦軸 color='country', # カラー title='オセアニアの人口推移', # タイトル labels={ "year": "年", "pop": "人口", "country": "国" } # ラベル ) fig.show()
以下、実行結果です。
円グラフ (Pie Chart)
円グラフは、全体に対する各部分の割合を可視化するのに使用されます。
Plotlyでは、plotly.express.pie関数を使って円グラフを作成できます。
以下、コードです。
import plotly.express as px df = px.data.tips() fig = px.pie( df, # DataFrame values='tip', # 円グラフの値 names='day', # 円グラフの名前 title="曜日ごとのチップ額の割合", # タイトル labels={ "tip": "チップ額", "day": "曜日" } # ラベル ) fig.show()
以下、実行結果です。
面グラフ (Area Plot)
面グラフは、時系列データの推移を、面積で表現するグラフです。
Plotlyでは、plotly.express.area関数を使って面グラフを作成できます。
以下、コードです。
import plotly.express as px df = px.data.gapminder().query("continent == 'Asia'") fig = px.area( df, x="year", # 横軸 y="pop", # 縦軸 color="country", # カラー title='アジアの人口推移', # タイトル labels={ "year": "年", "pop": "人口", "country": "国" } # ラベル ) fig.show()
以下、実行結果です。
これらのグラフは、Plotlyで作成できる基本的なグラフの一部です。
Plotlyは、さらに多くのグラフとチャートをサポートしており、データの可視化をより効果的に行うことができます。
統計的なグラフとチャート
箱ひげ図 (Box Plot)
箱ひげ図は、データの分布を簡潔に視覚化し、中央値、四分位範囲、外れ値などを把握するのに役立ちます。
Plotlyでは、plotly.express.box関数を使って箱ひげ図を作成できます。
以下、コードです。
import plotly.express as px df = px.data.tips() fig = px.box( df, # DataFrame x="day", # 横軸 y="total_bill", # 縦軸 color="smoker", # カラー notched=True, # ノッチ(くびれ)付き箱ひげ図を描画 title="曜日別・喫煙者別の請求額の箱ひげ図", labels={ "day": "曜日", "total_bill": "請求額", "smoker": "喫煙者" } # ラベル ) fig.show()
以下、実行結果です。
バイオリンプロット (Violin Plot)
バイオリンプロットは、箱ひげ図とカーネル密度推定を組み合わせたグラフで、データの分布をより詳細に表示できます。
Plotlyでは、plotly.express.violin関数を使ってバイオリンプロットを作成できます。
以下、コードです。
import plotly.express as px df = px.data.tips() fig = px.violin( df, # DataFrame y="tip", # 縦軸 x="smoker", # 横軸 color="sex", # カラー box=True, # 箱ひげ図を描画 points="all", # データ点を描画 hover_data=df.columns, # マウスオーバーラベル title="喫煙者別・性別ごとのチップ額のバイオリンプロット", labels={ "tip": "チップ額", "smoker": "喫煙者", "sex": "性別" } # ラベル ) fig.show()
以下、実行結果です。
ヒートマップ (Heatmap)
ヒートマップは、2つのカテゴリ変数の関係性を色で表現するグラフです。
Plotlyでは、plotly.express.density_heatmap関数を使ってヒートマップを作成できます。
以下、コードです。
import plotly.express as px import pandas as pd # DataFrameを作成 data = { "year": ["2000", "2000", "2001", "2001"], "month": ["January", "February", "January", "February"], "passengers": [150, 200, 160, 210] } df = pd.DataFrame(data) # ヒートマップを作成 fig = px.density_heatmap( df, # DataFrame x="year", # 横軸 y="month", # 縦軸 z="passengers", # ヒートマップの値 color_continuous_scale="blues", # カラー color_continuous_midpoint=200, # カラーの中間値 title="年・月別の乗客数のヒートマップ", # タイトル labels={ "year": "年", "month": "月", "passengers": "乗客数" } # ラベル ) fig.show()
以下、実行結果です。
散布図行列 (Scatterplot Matrix)
散布図行列は、複数の変数のペアワイズの関係性を可視化するのに役立ちます。
Plotlyでは、plotly.express.scatter_matrix関数を使って散布図行列を作成できます。
以下、コードです。
import plotly.express as px df = px.data.iris() fig = px.scatter_matrix( df, # DataFrame dimensions=[ "sepal_width", "sepal_length", "petal_width", "petal_length" ], # 散布図行列の変数 color="species", # カラー title="アヤメのデータセットの散布図行列", # タイトル labels={ "sepal_width": "がく片の幅", "sepal_length": "がく片の長さ", "petal_width": "花弁の幅", "petal_length": "花弁の長さ", "species": "種" } # ラベル ) fig.show()
以下、実行結果です。
相関行列 (Correlation Matrix)
相関行列は、複数の変数の間の相関関係を視覚化します。
Plotlyでは、plotly.express.imshow関数とdf.corr()メソッドを組み合わせて相関行列を作成できます。
以下、コードです。
import plotly.express as px import pandas as pd df = px.data.iris() # 量的変数の相関行列を作成 num_vars = ['sepal_length','sepal_width','petal_length','petal_width'] correlation_matrix = df[num_vars].corr() # 相関行列を可視化 fig = px.imshow( correlation_matrix, # DataFrame x=correlation_matrix.columns, # 横軸 y=correlation_matrix.columns, # 縦軸 color_continuous_scale="bluered", # カラー修正 color_continuous_midpoint=0, # カラーの中間値 title="アヤメのデータセットの相関行列", # タイトル ) fig.show()
以下、実行結果です。
これらの統計グラフは、データ分析において非常に重要な役割を果たします。
データの分布、関係性、傾向などを把握することで、より深い洞察を得ることが可能になります。
Plotlyのインタラクティブな機能と組み合わせることで、データ分析をより効果的に進めることができます。
Plotlyで階層的なデータを見える化
ツリーマップ (Treemap)
ツリーマップは、階層構造を矩形で表現するグラフです。
各矩形の面積は、データの値に対応しています。
ツリーマップを使うことで、階層構造とデータの値を同時に把握することができます。
Plotlyでは、plotly.express.treemap関数を使ってツリーマップを作成できます。
以下、コードです。
import plotly.express as px df = px.data.gapminder().query("year == 2007") fig = px.treemap( df, # DataFrame path=[ px.Constant("world"), # ツリーマップのルート(最上位:親) 'continent', # 階層のリスト(子) 'country' # 階層のリスト(子の子) ], # 階層 values='pop', # ツリーマップの面積 color='lifeExp', # ツリーマップの色 hover_data=['iso_alpha'], # マウスオーバーラベル title="2007年の世界の人口と平均寿命", # タイトル labels={ "continent": "大陸", "country": "国", "pop": "人口", "lifeExp": "平均寿命" } ) fig.show()
以下、実行結果です。
サンバーストチャート (Sunburst Chart)
サンバーストチャートは、ツリーマップと同様に階層構造を可視化するグラフですが、円形で表現されます。
中心から外側に向かって階層が深くなり、各セクターの面積はデータの値に対応しています。
Plotlyでは、plotly.express.sunburst関数を使ってサンバーストチャートを作成できます。
以下、コードです。
import plotly.express as px df = px.data.tips() fig = px.sunburst( df, # DataFrame path=['day', 'time', 'sex'], # 階層 values='total_bill', # ツリーマップの面積 title="合計請求額(total_bill)", # タイトル ) fig.show()
以下、実行結果です。
ツリーマップとサンバーストチャートは、階層構造を持つデータを分かりやすく可視化するのに役立ちます。
それぞれのグラフの特徴を理解し、データに合わせて使い分けることで、より効果的なデータ可視化を実現できます。
まとめ
この記事では、Plotlyの基本的な使い方から、様々なグラフの描画方法を紹介してきました。
Plotlyのインタラクティブな機能は、データの探索と理解を深めるのに役立ちます。
Plotlyは、今後も進化を続けていくでしょう。新たなグラフの種類が追加されたり、インタラクティブ機能が強化されたりする可能性があります。
Plotlyを使いこなすことで、データ可視化の可能性を最大限に引き出し、より効果的なデータ分析を実現できるでしょう。