Python
 Computer >> コンピューター >  >> プログラミング >> Python

matplotlibのテーブルで列の背景色を設定する方法

matplotlibのテーブルで列の背景色を設定するには?

matplotlibのテーブルでは、ax.table()cellColours 引数を使って各セルの背景色を個別に指定できます。各列に属するすべてのセルに同じ色を割り当てることで、実質的に「列ごとの背景色」を実現できます。

実装の手順

  • 図のサイズを設定し、サブプロット間および周囲のパディングを調整します。
  • 列ラベル用のタプルを作成します。
  • レコード(リストのリスト)としてセルのテキストデータを作成します。
  • 各セルの背景色を格納したリストのリストを作成します。
  • plt.subplots() で図とサブプロットを作成します。
  • ax.table() で軸(ax)にテーブルを追加し、cellColours に色情報を渡します。
  • ax.axis('off') で軸を非表示にします。
  • plt.show() メソッドで図を表示します。

サンプルコード

import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

columns = ('name', 'age', 'marks', 'salary')

cell_text = [["John", "23", "98", "234"], ["James", "24", "90", "239"]]

colors = [["red", "yellow", "blue", "green"], ["blue", "green", "yellow", "red"]]

fig, ax = plt.subplots()

the_table = ax.table(cellText=cell_text, cellColours=colors, colLabels=columns, loc='center')

ax.axis('off')

plt.show()

出力結果

matplotlibのテーブルで列の背景色を設定する方法

上記のコードを実行すると、各行・各列のセルに colors リストで指定した色が適用されたテーブルが図の中央に表示されます。

補足:特定の列だけを一括で着色する方法

テーブル作成後に get_celld() でセルオブジェクトへアクセスすれば、特定の列だけをまとめて着色することも可能です。

for (row, col), cell in the_table.get_celld().items():
    if col == 1:  # 「age」列を水色に変更
        cell.set_facecolor("lightblue")

この方法なら、行数が多くても1行のコードで列全体の色を統一でき、コードの可読性も向上します。

  1. Matplotlibで図のマージン(余白)を設定する方法をわかりやすく解説

    Matplotlibで作成するグラフの余白(マージン)を調整したい場合、margins()メソッドを使うことで簡単に設定できます。この記事では、実際のコード例とともに、マージン設定の基本的な手順を紹介します。margins()メソッドとはmargins()は、プロット領域の周囲にどれだけの余白を設けるかを指定するメソッドです。引数としてxやyに0〜1の範囲の値を渡すことで、軸方向ごとのマージン率を制御できます。例えばmargins(x=0, y=0)と指定すると、データ範囲ぴったりにプロットが表示され、余白がなくなります。実装手順figureサイズを設定し、サブプロット間および周囲のパディング

  2. MatplotlibでRectangle(長方形)に色を設定する方法

    Matplotlibで長方形(Rectangle)に色を設定するには、以下の手順に従います。手順figure() メソッドを使用して、新しい図(Figure)を作成するか、既存の図をアクティブにします。add_subplot() メソッドを使用して、サブプロット構成の一部として図に ~.axes.Axes を追加します。長方形は、アンカーポイント(基準座標)と幅・高さを指定することで定義できます。作成したRectangleパッチを add_patch() でプロットに追加します。xlim() および ylim() メソッドを使用して、x軸とy軸の表示範囲を設定します。図を表示するには、show