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

matplotlibで1つの図にだけローカルなrcParamsを設定する方法

matplotlibでは、グローバルな rcParams を変更するとすべての図に設定が反映されますが、特定の1つの図にだけ異なるスタイルを適用したいケースはよくあります。そんなときに便利なのが plt.rc_context() です。このコンテキストマネージャーを使えば、with ブロック内でのみ rcParams を一時的に変更でき、ブロックを抜ければ元の設定に自動的に戻ります。

手順

  • 図のサイズを設定し、サブプロット間および周囲の余白を調整します。
  • サンプルデータの個数を格納する変数 N を初期化します。
  • numpy を使って x と y のデータポイントを作成します。
  • plt.rc_context() により、rcParams を一時的に変更するコンテキストマネージャーを取得します。
  • 現在の図にインデックス1の位置へサブプロットを追加します。
  • plot() メソッドで x と y のデータポイントをプロットします。
  • 現在の図にインデックス2の位置へサブプロットを追加します。
  • plot() メソッドで x と y のデータポイントをプロットします。
  • show() メソッドで図を表示します。

コード例

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt

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

N = 10

x = np.random.rand(N)
y = np.random.rand(N)

# rc_context 内でのみ設定が有効になる
with plt.rc_context({"axes.grid": True, "grid.linewidth": 0.75, "lines.linestyle": 'dashed'}):
    plt.subplot(121)
    plt.plot(x, y)

# コンテキスト外では元の設定で描画される
plt.subplot(122)
plt.plot(x, y)

plt.show()

解説

このコードでは、左側のサブプロット(インデックス121)は rc_context の中で描画されているため、グリッドが表示され、破線(dashed)のスタイルでプロットされます。一方、右側のサブプロット(インデックス122)はコンテキストの外で描画されているため、デフォルトのスタイル(グリッドなし・実線)になります。

このように plt.rc_context() を使うことで、グローバル設定を汚すことなく、図やサブプロット単位でスタイルを柔軟に切り替えられます。複数の図で異なるテーマを使い分けたい場合や、既存コードの設定に影響を与えたくない場合に特に有効です。

出力結果

上記のコードを実行すると、次のような出力が得られます。

matplotlibで1つの図にだけローカルなrcParamsを設定する方法

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

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

  2. 【Python】MatplotlibでX軸の値(目盛りラベル)を設定する方法

    Python の Matplotlib でグラフの X 軸の値(目盛りラベル)を自由に設定したい場合は、plt.xticks() メソッドを使うのが最も簡単です。以下の手順で実装できます。 X軸の値を設定する手順 x と y のデータポイントを格納する2つのリストを作成します。 range(len(x)) を使って、目盛りの基準となるインデックス(xticks の範囲)を取得します。 plot() メソッドで、インデックスのリストと y データを使って折れ線グラフを描画します。 xticks() メソッドを使い、デフォルトの目盛りを実際の X 軸の値に置き換えます。 show() メソッドで