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

Python Matplotlibで条件に基づいて多色の線をプロットする方法

Python の Matplotlib では、条件に応じて線の色を切り替えることで、1本のグラフに複数の色を持つ「多色の線」を描画できます。この記事では、正弦波データを例に、値がプラスの区間は赤、マイナスの区間は青で表示する方法を解説します。

実装の手順

  1. 図(figure)のサイズを設定し、サブプロット周辺の余白を調整します。
  2. NumPy を使って y データポイントを作成します。
  3. 色を切り替えるための条件判定用データとして、u(上側)と l(下側)の2つの配列を用意します。
  4. plot() メソッドを使い、ul をそれぞれ異なる色でプロットします。
  5. show() メソッドで図を表示します。

ポイント:np.nan を使った色の分割

このテクニックの鍵となるのは np.nan です。Matplotlib は NaN(非数)を含む点をプロットしないため、条件に合わない値をすべて NaN に置き換えることで、その部分が「描画されない」状態になります。結果として、条件ごとに分けた2つの系列を重ねて描くだけで、1本の線が途中で色を変えているように見えます。

  • u[u <= 0] = np.nan … 0以下の値を NaN にして、正の区間だけを赤で描画
  • l[l >= 0] = np.nan … 0以上の値を NaN にして、負の区間だけを青で描画

サンプルコード

import matplotlib.pyplot as plt
import numpy as np

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

# -10〜10 の範囲でサイン波を生成
y = np.sin(np.linspace(-10, 10, 100))

# 上側(正)と下側(負)用のコピーを作成
u = y.copy()
l = y.copy()

u[u <= 0] = np.nan
l[l >= 0] = np.nan

plt.plot(u, color='red')
plt.plot(l, color='blue')

plt.show()

出力結果

このコードを実行すると、サイン波がプラスの区間では赤、マイナスの区間では青に自動的に切り替わったグラフが表示されます。ゼロを通過するたびに色が変わる様子がひと目で確認できます。

応用のヒント

同じ考え方は、閾値を超えた区間だけを強調表示したい場合などにも活用できます。たとえば、y > 0.5 のような条件に変更すれば、特定の範囲のみ別の色でハイライトすることも可能です。また、color 引数を変更すれば、任意の配色に自由にカスタマイズできます。

  1. MatplotlibでPythonのプロットに度(°)記号を挿入する方法

    Matplotlibで作成したグラフに度(°)記号を挿入したい場合、LaTeX表記を利用すると簡単に実現できます。この記事では、具体的な手順とサンプルコードをわかりやすく解説します。 度記号を挿入する手順 numpyを使って、pV(圧力×体積)、nR、T(温度)のデータポイントを作成します。 plot()メソッドを使って、pVとTの関係をプロットします。 xlabel()メソッドで、x軸のラベル「Pressure x Volume」を設定します。 ylabel()メソッドで、LaTeX表記 $^\circ$ を含む温度ラベルをy軸に設定します。 show()メソッドを呼び出して、図を画面に表

  2. Matplotlibのラベルに改行を入れる方法|Pythonサンプルコード付きで解説

    本記事では、PythonのMatplotlibを使って、グラフの軸ラベルに改行を挿入する方法を解説します。「\n」を活用することで、X軸やY軸のラベルを複数行に分けて見やすく表示できます。 実装手順 「\n」を使用して、X軸・Y軸それぞれのラベルに改行を含めたテキストを設定します。 plt.rc()メソッドで現在のrcParamsを設定し、axesグループに対してプロパティサイクルを適用します。 cyclerを使って、線の色のグループを設定します。色のリストは「r」(赤)、「g」(緑)、「b」(青)、「y」(黄)で構成されます。 Cyclerクラスは、単一の位置引数、2つの位置引数のペア、ま