[matplotlib] 131. Petroff10とTab10: Matplotlibカラースタイルの比較

matplotlib

はじめに

データ可視化において色選択は単なる見た目の問題ではなく、情報の伝達効率やアクセシビリティに大きく影響します。この記事では、Matplotlibの新しいカラースタイル「Petroff10」と従来から広く使われている「Tab10」を比較し、それぞれの特徴と使い分けについて解説します。

Petroff10スタイルの特徴

Petroff10は、Matthew A. Petroffが開発した10色のカラーシーケンスに基づいています。このスタイルは以下の特徴を持っています:

  • アクセシビリティ重視: 色覚多様性に配慮した設計で、色覚異常を持つ人にも区別しやすい色の組み合わせを採用
  • 美的バランス: 視覚的に調和がとれており、プロフェッショナルな印象を与える
  • コントラスト: 各色間の明度差が適切で、グラフ上で識別しやすい
  • モノクロ互換性: 白黒印刷した場合でも区別しやすいよう設計されている

Tab10スタイルの特徴

Tab10は、Matplotlibのデフォルトカラーマップの一つで、以下の特徴があります:

  • 鮮やかな色彩: 彩度の高い色を多用し、視覚的なインパクトがある
  • カラフルな配色: 異なる色相を広く使用し、データ系列の違いを強調
  • 一般的な認知度: 多くのMatplotlibユーザーに馴染みがあり、デフォルト設定として広く使われている
  • アクセシビリティの制約: 一部の色の組み合わせは色覚異常の方には区別しづらい場合がある

コード&解説

モジュールのインポート

バージョン

両スタイルの比較

以下のコードサンプルを使って、両スタイルの視覚的な違いを確認できます:

このコードにより、Matplotlibを使って同じデータセットをTab10スタイル(デフォルト)とPetroff10スタイルで可視化し、視覚的に比較しました。コードの主な内容を解説します:

データ生成

0から10までの範囲で100点のデータポイントを等間隔に生成しています。これがx軸の値となります。

Tab10スタイル(デフォルト)の可視化

まず、Matplotlibのデフォルトスタイル(Tab10カラーマップを使用)でグラフを描画します:

  • plt.style.context(‘default’)でデフォルトスタイルを適用
  • 7×3インチのサイズでプロット領域を作成
  • 10本の異なる正弦波(位相をずらした)を描画
  • タイトルと凡例を設定
  • グラフを表示し、「tab10.png」として保存

Petroff10スタイルの可視化

次に、同じデータをPetroff10スタイルで描画します:

  • plt.style.context(‘petroff10’)でPetroff10スタイルを適用
  • 同じデータと同じサイズのプロット設定
  • タイトルと凡例を設定
  • グラフを表示し、「petroff10.png」として保存

違い

両スタイルの色値を比較しました:

このPythonコードは、MatplotlibのTab10カラーパレットとPetroff10カラーパレットの色値を表示するためのものです。以下に詳細を解説します:

コードの前半部分 – Tab10の色を取得

この部分は以下のことを行っています:

  • plt.cm.tab10.colors:Matplotlibの「Tab10」カラーマップから色のリストを取得します。
  • enumerate(tab10_colors):各色にインデックス番号をつけて反復処理します。
  • mpl.colors.rgb2hex(color):RGB形式の色値を16進数カラーコード(HEX)に変換して表示します。

コードの後半部分 – Petroff10の色を取得

この部分は以下のことを行っています:

  • plt.style.context(‘petroff10’):一時的にPetroff10スタイルを適用するコンテキストマネージャを使用します。
  • fig, ax = plt.subplots():新しいプロット領域を作成します。
  • line, = ax.plot([0, 1], [i, i]):シンプルな直線を描画し、Petroff10スタイルによって自動的に割り当てられる色を取得します。
  • line.get_color():描画した線の色を取得します。
  • plt.close():メモリリークを防ぐために、各反復でプロットを閉じています。

このコードを実行すると、両方のカラーパレットの10色それぞれのHEXコード値が表示され、具体的に使用されている色を把握することができます。

適している用途

Petroff10Tab10
学術論文や公式レポート一般的なデータ探索
アクセシビリティが重要な発表資料カジュアルな分析や社内共有
多様な視聴者向けのプレゼンテーションシンプルな比較グラフ
印刷される可能性がある文書少数のカテゴリ比較

選択基準

どちらのスタイルを選ぶべきかは、以下の基準で検討するとよいでしょう:

  • 対象視聴者: 多様な視聴者に向けた資料ならPetroff10
  • 用途: 公式文書や論文ならPetroff10、探索的分析ならTab10
  • 配布方法: 印刷される可能性が高い場合はPetroff10
  • データの性質: 多数の系列を比較する場合はPetroff10の方が識別しやすい

まとめ

Petroff10は、アクセシビリティと美的バランスを両立させた現代的なカラースタイルであり、特に公式な場面や多様な視聴者に向けた資料に適しています。一方、Tab10は鮮やかで視覚的なインパクトがあり、カジュアルなデータ探索や少数の系列比較に適しています。

データ可視化においては、目的や対象に応じて適切なカラースタイルを選択することが重要です。両スタイルの特性を理解し、状況に応じて使い分けることで、より効果的なデータコミュニケーションが可能になるでしょう。

参考

Petroff10 style sheet — Matplotlib 3.10.6 documentation

コメント