Pandasによるデータ読み込みの基本
PythonでExcelデータを扱う際、ベースとなるのはpandasライブラリです。まず、以下のコードで対象となるExcelファイルからデータを読み込みます。
import pandas as pd
# Excelファイルの読み込み
raw_data = pd.read_excel("sample_data.xlsx")
# 欠損値の除外(必要に応じて)
clean_df = raw_data.dropna(subset=["x_val", "y_val"])
1. pyechartsを利用したインタラクティブな散布図
pyechartsは、ブラウザ上で動作する動的なグラフを作成するのに適しています。マウスホバーによるデータ詳細表示など、インタラクティブな機能が標準で備わっています。
from pyecharts.charts import Scatter
from pyecharts import options as opts
# データの準備
input_x = clean_df["x_val"].tolist()
input_y = clean_df["y_val"].tolist()
# グラフオブジェクトの構築
chart = Scatter()
chart.add_xaxis(xaxis_data=input_x)
chart.add_yaxis(
series_name="観測データ",
y_axis=input_y,
symbol_size=12,
itemstyle_opts=opts.ItemStyleOpts(color="#2f4554")
)
# グローバル設定
chart.set_global_opts(
title_opts=opts.TitleOpts(title="データ分布分析"),
xaxis_opts=opts.AxisOpts(name="変量X", splitline_opts=opts.SplitLineOpts(is_show=True)),
yaxis_opts=opts.AxisOpts(name="変量Y", splitline_opts=opts.SplitLineOpts(is_show=True)),
tooltip_opts=opts.TooltipOpts(trigger="item")
)
# HTMLとして保存
chart.render("interactive_scatter.html")
2. matplotlibによるカスタマイズ性の高い静的グラフ
学術論文やレポート作成には、細かな調整が可能なmatplotlibが最適です。オブジェクト指向インターフェースを用いた実装例を紹介します。
import matplotlib.pyplot as plt
# フィギュアと軸の生成
fig, axis = plt.subplots(figsize=(8, 5))
# 散布図のプロット
scatter_plot = axis.scatter(
clean_df["x_val"],
clean_df["y_val"],
s=60, # ドットのサイズ
c="royalblue", # 色
alpha=0.6, # 透明度
edgecolors="white", # 枠線の色
linewidths=1 # 枠線の太さ
)
# ラベルとタイトルの設定
axis.set_title("実験結果の相関図", fontsize=14, pad=15)
axis.set_xlabel("測定値 A", fontsize=12)
axis.set_ylabel("測定値 B", fontsize=12)
# グリッド線の追加
axis.grid(color='gray', linestyle=':', linewidth=0.5)
# 画像として保存
plt.tight_layout()
plt.savefig("static_scatter.png", dpi=300)
plt.show()
3. seabornによる統計的・多機能な散布図
seabornはmatplotlibをベースにしており、データのグループ化や色の塗り分け(hue)を少ないコードで実現できます。
import seaborn as sns
import matplotlib.pyplot as plt
# スタイルの適用
sns.set_style("whitegrid")
# 散布図の作成
plt.figure(figsize=(9, 6))
scatter_ax = sns.scatterplot(
data=clean_df,
x="x_val",
y="y_val",
hue="category", # カテゴリごとに色分け
size="magnitude", # 値の大きさに応じてドットサイズを変更
palette="magma", # カラーパレットの指定
sizes=(20, 200) # サイズの範囲
)
# タイトルの設定
scatter_ax.set_title("カテゴリ別多変量プロット", fontsize=15)
# 凡例の位置調整
plt.legend(title="凡例", bbox_to_anchor=(1.02, 1), loc='upper left')
plt.tight_layout()
plt.show()
ライブラリ特性の比較
| ライブラリ | 主な特徴 | 推奨される用途 |
|---|---|---|
| pyecharts | JavaScriptベース、動的操作が可能 | Webダッシュボード、プレゼン資料 |
| matplotlib | 標準的、詳細なパラメータ設定が可能 | 論文投稿、印刷用静止画 |
| seaborn | 高水準API、洗練されたデフォルトデザイン | 探索的データ分析、多次元データ可視化 |
実装時の注意点
- データ型の一貫性: Excelから読み込んだデータが数値型(float/int)であることを確認してください。文字列が混入しているとエラーの原因になります。
- 日本語フォントの設定: matplotlibやseabornで日本語を表示する場合、
Japanize-matplotlibなどのライブラリを使用するか、フォントパスを明示的に指定する必要があります。 - オーバープロット対策: データ点数が非常に多い場合は、透明度(alpha)を低く設定するか、サンプリングを行って視認性を確保してください。