第 2 回 質問と回答¶
このページでは、第 2 回「データ可視化」に関して寄せられた質問・要望と、それに対する回答をまとめています。質問者の氏名や学籍番号は掲載せず、匿名で扱います。
質問の送り方
質問は 「📮 連絡フォーム」 または「各回の演習確認フォーム」からお寄せください。いただいた内容は、同様の疑問を持つ他の受講生にも役立つようこのページに随時追加していきます。
A. グラフの種類と使い分け¶
ヒートマップというのはあまり聞きなじみがないのでどんな時に使うのかが気になる / バイオリンプロットやヒートマップは今日はじめて知ったのでもっと多くの種類のグラフを詳しく知りたい
ヒートマップとバイオリンプロットはそれぞれ以下の特徴があります。
- ヒートマップ — 2 次元データの密度や相関を色の濃淡で表現する。特徴量間の相関行列、曜日×時間帯の利用者数、分類モデルの混同行列など「行と列の 2 軸で整理されたデータ」に向く
- バイオリンプロット — 箱ひげ図とカーネル密度推定を組み合わせた図。データの分布の形(山が一つか二つか、偏りがあるか)を視覚的に比較できる
ヒートマップは第 6 回以降、モデル評価の場面で実際に使う予定です。
横向きの棒グラフはどのような場合に使うのか
主に以下の 2 つの場面で使用されます。
- ラベル名が長いとき — 横に並べると文字が重なる場合(国名・アンケート文など)
- 項目数が多いとき — 10 以上の都道府県ランキングなど、縦に積み上げた方が読みやすい場合
ユーザの視線は上から下に流れるため、「順位を見せる」ランキング表現にも向いています。
実際にどのようにグラフを選択すれば良いのかもっと詳しく知りたい / 世の中で最も使われているグラフとその理由が知りたい
目的別の対応は次のように整理できます。
| 見たいもの | 適したグラフ |
|---|---|
| 時間の推移 | 折れ線グラフ |
| カテゴリの比較 | 棒グラフ |
| 2 変数の関係 | 散布図 |
| 全体に対する割合 | 円グラフ・積み上げ棒 |
| 分布の形 | ヒストグラム・箱ひげ図・バイオリンプロット |
| 2 次元の密度・相関 | ヒートマップ |
実務で最もよく見かけると思われるのは「棒グラフ」と「折れ線グラフ」です。理由は「読み方を説明しなくても伝わる」「Excel で簡単に作ることができる」「比較・推移という最頻出のニーズに合う」ためです。
機械学習の各工程でどの可視化が最も効果的なのか
工程ごとに目的が違うため、使うグラフも変わります。
- データ理解・探索 — ヒストグラム、箱ひげ図、散布図・ペアプロット
- 前処理 — 欠損値ヒートマップ、相関行列ヒートマップ
- モデル評価(回帰) — 予測値 vs 実測値の散布図、残差プロット
- モデル評価(分類) — 混同行列(ヒートマップ)、ROC 曲線、適合率–再現率曲線
- 学習の診断 — 学習曲線(訓練誤差と検証誤差の推移)
詳しくは各回の講義で順次扱います。
2 つ以上のデータの分析の方法。グラフとして可視化してもデータ理解ができない場合の対処
列数が多いデータでは、1 枚のグラフで全体を見渡すのは困難です。対処方法は次のとおりです。
- ペアプロット —
seaborn.pairplot(df)で全列の組み合わせを散布図&ヒストグラムで俯瞰 - 相関行列のヒートマップ —
sns.heatmap(df.corr())で「どの列同士が関係していそうか」を一望 - 次元削減 — PCA や t-SNE で高次元を 2 次元に圧縮して散布図化
- ドメイン知識で列を絞る — 「この業界なら気温と売上が重要」など背景知識で注目列を選ぶ
「可視化だけでは理解できない」というのは多変量データではよく起こります。統計量(相関係数、分散分析)と可視化を併用するのが定石です。
B. グラフのカスタマイズ・見やすさ¶
授業中の課題で生成したグラフが質素で物足りなく感じたので色の変更やグラフの立体化など、もう少し詳しく知りたい / 見やすくわかりやすいグラフを作る工夫について詳しく知りたい
よく使う調整は次のとおりです。
散布図の点が太すぎる場合は plt.scatter(x, y, s=10, alpha=0.3) のようにサイズ s と透明度 alpha を調整すると、点が重なっても分布が見えやすくなります。
なお、レポートや論文では立体(3D)グラフは推奨されません(遠近で数値が歪んで読み取りにくくなる)。色・配置・注釈で「情報を絞って伝える」ことを心がけてください。
3 次元のグラフを表示することが可能なのか知りたい / 更に複雑なデータをきれいに可視化できるか試してみたい
可能です。matplotlib には mpl_toolkits.mplot3d が含まれており、3D 散布図や曲面を描画することができます。
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(projection="3d")
ax.scatter(x, y, z)
ただし、上でも書いたように、3D プロットは遠近感で数値が読み取りにくいため、「データの分布を感覚的に眺める」用途には適しますが、データを正確に伝えるには 2D の複数グラフに分けることが好ましいです。
色覚多様性(アクセシビリティ)に配慮したカラーパレットの選び方を知りたい
matplotlib・seaborn には色覚多様性に配慮したカラーマップが用意されています。
- 連続量: viridis / plasma / cividis(黒→黄に向かって明度が単調に変化)
- カテゴリ: colorblind(seaborn の
sns.set_palette("colorblind"))
jet や rainbow は色相が複雑に変化し、白黒印刷や色覚特性によって順序が伝わらないため、現在は非推奨とされています。
詳しい解説は各ライブラリの公式ドキュメントが参考になります。
- Matplotlib: Choosing Colormaps —
viridis系が推奨される理由(明度が単調に変化するため色覚特性や白黒印刷でも順序が保たれる)が解説されている - Seaborn: Color palettes —
colorblindパレットを含む各種パレットの使用例とサンプル画像がまとめられている
C. Matplotlib・Seaborn の使い方¶
Seaborn の長所やその実用例を知りたい / Seaborn は Matplotlib よりも簡単にきれいな図が描けるのでもっと練習したい
Seaborn は matplotlib の上に作られたライブラリで、統計的な可視化を短いコードで書けるよう設計されています。主な強みは次の 3 点です。
- カテゴリ変数の自動処理 —
hue="species"と書くだけで色分けされる - 統計的なグラフが標準装備 —
pairplot,heatmap,violinplot,kdeplotなど - pandas の DataFrame と親和性が高い — 列名を文字列で指定できる
例えば matplotlib で散布図を種別に色分けするには for ループが必要ですが、Seaborn なら 1 行で済みます。
Seaborn のサンプルデータの場所がよくわからなかった / Seaborn のようにサンプルデータを含んでいるライブラリが他にもあるのか知りたい
Seaborn のサンプルデータは、初回読み込み時にインターネットから自動ダウンロードされます(github.com/mwaskom/seaborn-data が配布元)。実行すれば利用者のローカルフォルダに保存されるので、特別な準備は不要です。
サンプルデータセットを含む他のライブラリの例は次のとおりです。
- scikit-learn —
sklearn.datasetsに iris, digits, wine, california_housing など - TensorFlow / PyTorch — MNIST, CIFAR などの画像データ
Seaborn を用いたグラフの描画のやり方を詳しく学びたい / sns.histplot() など seaborn の関数についてさらに知りたい
Seaborn の主要な関数は以下のとおりです。全体像を眺めたい場合は 公式ギャラリー がおすすめです(コード付きの例が豊富)。
| 目的 | 関数 |
|---|---|
| ヒストグラム・カーネル密度 | histplot, kdeplot, displot |
| 散布図・折れ線 | scatterplot, lineplot, relplot |
| カテゴリ比較 | barplot, boxplot, violinplot, stripplot |
| 相関・密度 | heatmap, pairplot, jointplot |
plt と fig.ax のどちらをどのようなタイミングで使えばいいのか調べたい
使い分けの目安は以下のとおりです。
- plt スタイル — グラフが 1 つで、素早く描きたいとき(授業の演習、データ探索)
- fig, ax スタイル — 複数のグラフを並べたいとき、細かいレイアウト調整が必要なとき、論文・レポート用の仕上げ
迷ったら plt で始めて、複数グラフが必要になったら移行する形で問題ありません。
D. 実務・応用での活用¶
より良い可視化の方法などが AI の発達により発見される可能性はあるのか大変知りたいと感じた
いくつかの方向で研究・実用化が進んでいます。
- 自動可視化提案 — データを入力すると適切なグラフを自動選択するツール(Tableau の「Explain Data」、Microsoft Power BI の Quick Insights など)
- 自然言語 → グラフ — 「売上の推移をわかりやすいグラフで」と指示するとコードを生成する LLM ベースのツール(ChatGPT の Advanced Data Analysis、Claude の分析機能など)
- 大規模データの可視化の最適化 — 数千万点の散布図を人間が見やすい形に要約するアルゴリズム(datashader など)
ただし「何を見たいか」を決めるのは依然として人間の仕事です。AI は「見せ方の提案」が得意です。
株式や仮想通貨のデータをオンラインで参照するシステムを作る場合、データが常に動くと思うが、これらの整理・参照方法やその技術におけるデータの受け渡し方法について気になる
リアルタイムに動くデータの扱いは、次のような構成が典型です。
- 取得 — 取引所の Web API(REST・WebSocket)や
yfinance・ccxtなどのライブラリで市場データを取得 - 保存 — 時系列データベース(InfluxDB、TimescaleDB)や KVS(Redis)に追記保存
- 分析 — pandas で時系列処理(移動平均、ボラティリティ計算)
- 可視化 — リアルタイム更新なら Plotly Dash、Streamlit、Grafana など
機械学習との組み合わせでは、時系列モデル(ARIMA、Prophet、LSTM)や強化学習による自動トレードなども研究されていますが、実運用では「データの遅延・欠損・異常値」のハンドリングが予測精度以上に重要になります。
E. CHIKUWA Editor について¶
CHIKUWA エディタを開いた際に最小画面になり、実行した直後は画面が最大であってほしい
ご指摘ありがとうございます。CHIKUWA Editor v1.1.0 で改善を行いましたので、適宜アップデートをお願いできればと思います。更新内容の詳細については「更新情報」をご参照ください。
CHIKUWA editor でターミナルが消え、実行内容やエラー内容が見えなくなってしまった。復元する方法を教えてほしい
ターミナル右上にある「閉じる」ボタンを押すと、ターミナルが非表示の状態になります。以下のいずれかの方法により、ターミナルを再度表示させることができます。
- Ctrl+J — ターミナルの表示/非表示を切り替えるショートカットキーです
- ターミナル表示/非表示切り替えボタン — タイトルバーの右側に各パネル切り替え用のボタンが並んでいます