分散型チャートを作成する:Pythonでデータを可視化する

複数のデータ間の関係を一目で把握したいですか? そんな時に分散型チャート(Scatter Plot)が最適です。 特に、カテゴリー別に色を変えて、トレンドラインまで追加すると、複雑なデータも簡単に理解することができます。
この記事では、分散型チャート描画を Pythonの matplotlibと numpyを使って段階的に説明します。さらに、トレンドラインの追加、スタイルの適用など、実務でよく使われるヒントも含まれていますので、お見逃しなく!
分散型チャートとは?

散布図は、2つの変数間の関係を視覚的に表す強力なツールです。X軸とY軸にデータを配置し、各点の位置が特定のデータを表します。
分散型チャートを使用すると、次のようなインサイトを得ることができます:
- 変数間の相関関係(正の相関、負の相関、無関係)。
- データのパターンや群集。
- 異常値(Outlier)検出。
Pythonで分散型チャートを描く
以下のコードは カテゴリ型データで区切られた分散型チャートを描き、トレンドラインも追加します。
import numpy as np
matplotlib.pyplot as plt をインポートします。
import font_manager, rc from matplotlib import font_manager, rc
# ハングルフォント設定
rc('font', family='HCR Dotum')
# ランダムデータ生成
np.random.seed(42)
x = np.random.normal(0, 1, 100)
y = x * 0.5 + np.random.normal(0, 0.5, 100)
categories = np.random.choice(['A', 'B', 'C'], 100)
# グラフスタイル設定
plt.style.use('ggplot') # ggplotのスタイルに変更する
plt.figure(figsize=(10, 6))
# カテゴリー別に違う色で散布図を生成する。
for category in np.unique(categories):
mask = categories == category
plt.scatter(x[mask], y[mask]、
label=category、
alpha=0.6、
s=100)
#トレンドラインを追加
z = np.polyfit(x, y, 1)
p = np.poly1d(z)
plt.plot(x, p(x), "r--", alpha=0.8)
# グラフを飾る
plt.title("Scatter Plot with Trend Line", pad=20)
plt.xlabel("X Variable")
plt.ylabel("Y Variable")
# グリッドを追加
plt.grid(True, linestyle='--', alpha=0.7)
# 凡例を表示
plt.legend(title="Categories", loc='upper left')
# 軸の範囲設定
plt.xlim(min(x)-0.5, max(x)+0.5)
plt.ylim(min(y)-0.5, max(y)+0.5)
# グラフの保存と表示
plt.savefig('scatter_plot.png', dpi=300, bbox_inches='tight')
plt.show()
コード解説
- ライブラリインポート:
numpy:データを生成して演算に活用。matplotlib.pyplot: 分散型チャートを生成する主なツール。
- ハングルフォント設定:
rc('font', family='HCR Dotum')- チャートタイトルとラベルをハングルで表示するためにフォントを設定します。
- データ生成:
np.random.seed(42) x = np.random.normal(0, 1, 100) y = x * 0.5 + np.random.normal(0, 0.5, 100) categories = np.random.choice(['A', 'B', 'C'], 100)x: 平均0、標準偏差1の正規分布で生成されたデータ。y:xと線形関係を持ち、若干のノイズを加えます。カテゴリーA、B、Cのいずれかのカテゴリーをランダムに付与。
- カテゴリ別散布図作成:
for category in np.unique(categories): mask = categories == category plt.scatter(x[mask], y[mask], label=category, alpha=0.6, s=100)- 各カテゴリ(A、B、C)ごとに異なる色で散布図を作成。
- トレンドライン追加:
z = np.polyfit(x, y, 1) p = np.poly1d(z) plt.plot(x, p(x), "r--", alpha=0.8)np.polyfit: XとY間の線形回帰を計算します。np.poly1d: 回帰多項式を生成してトレンドラインで表現。
- スタイルと視覚要素の設定:
- タイトル、X/Y軸のラベル設定:
plt.title("Scatter Plot with Trend Line", pad=20) plt.xlabel("X Variable") plt.ylabel("Y Variable") - カテゴリ説明は凡例(
plt.legend)で提供。
- タイトル、X/Y軸のラベル設定:
- 保存と出力:
plt.savefig('scatter_plot.png', dpi=300, bbox_inches='tight') plt.show()- 高解像度でチャートを保存(
scatter_plot.png)して出力します。
- 高解像度でチャートを保存(
分散型チャートの活用
1.変数間の相関関係分析
- 正の相関関係:Xが増加するとYも増加するパターン。
- 例:広告費(X)が増えると売上(Y)が増える場合。
- 負の相関関係:Xが増加するとYは減少するパターン。
- 例:価格(X)が高くなると販売量(Y)が減少する場合。
- 無関係:XとYの間に何の関係もない場合。
- 例:特定の地域の天気とその地域で消費されるインターネットトラフィック。
分散型チャートにより、相関関係を直感的に把握することができ、これに基づいてより深いデータ分析を行うことができます。
2.データ分布と群集検出
- データ群集の確認
分散型チャートは、データが特定の区間に集中しているか(群集)確認するのに効果的です。- 例です:顧客の年齢層(X)と購入頻度(Y)を散布図で表すと、特定の年齢層の顧客がより頻繁に購入するパターンを発見することができます。
- 異常値検出(Outlier Detection)
異常値データは、他のデータと著しく異なるパターンを示します。分散型チャートで目立つ外郭の点として表示されるため、異常値を視覚的に簡単に検出することができます。
3.データの分類とカテゴリの可視化
- データが複数のカテゴリー(Category)に分かれている場合、分散型チャートはこれを効果的に表現します。
- 例:製品カテゴリー(A,B,C)による売上(X)と顧客満足度(Y)を散布図で表現すると、各カテゴリーの特性を色で区分して把握することができます。
- カテゴリー別にデータパターンを分析し、特定のカテゴリーが他のカテゴリーより優れたパフォーマンスを示すかどうかを確認することができます。
4.回帰分析と予測モデリング
- トレンドラインの追加:分散型チャートにトレンドラインを追加すると、データ間の関係をより明確に分析することができます。
- 例:住宅地(X)と住宅価格(Y)を散布図で表現した後、トレンドラインを追加して住宅価格の変化を視覚化。
- このような傾向は、予測モデルを設計したり、データに基づいた意思決定を行う上で重要な参考資料となります。
5.マーケティングとパフォーマンス分析
- 顧客行動分析
- 顧客の年齢(X)と月間購入回数(Y)を表現し、どの年齢層の顧客が最も活発に活動しているかを確認。
- パフォーマンス指標の追跡
- 広告キャンペーンのクリック率(X)とコンバージョン率(Y)を表現し、どの広告がより大きな成果を示すかをデータで説明することができます。
整理する
この記事では、分散型チャートの描画をPythonで実装し、データの関係とパターンを視覚化する方法を学びました。 トレンドラインとカテゴリ分けにより、データをより明確に分析することができました。
皆さんも上記のコードを活用して様々なデータを可視化してみてください!データ分析の第一歩をPythonで始めてみませんか?さらに一歩進んでPythonの可視化能力を伸ばすには Pythonの視覚化で学ぶドーナツチャートの描画とネスト方法 ポストをご覧ください!





