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

Matplotlibで2本の直線の交点を通る水平線と垂直線をプロットする方法

Matplotlibでは、2本の直線の交点を計算し、その点を通る水平線と垂直線を描画することで、交点の位置を視覚的にわかりやすく示すことができます。以下の手順で実装できます。

手順

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
  • 傾き(m1、m2)と切片(c1、c2)の値を初期化し、2本の直線を定義します。
  • numpyを使ってx軸のデータ点を作成します。
  • plot()メソッドを使って2本の直線をプロットします。
  • 傾きと切片の値から、2本の直線の交点(xi、yi)を計算します。
  • axvline()とaxhline()を使って、交点を通る垂直線と水平線を破線で描画します。
  • scatter()メソッドで交点の座標を黒い点としてマークします。
  • show()メソッドで図を表示します。

交点の求め方

2本の直線「y = m1・x + c1」と「y = m2・x + c2」の交点は、連立方程式を解くことで求められます。x座標は xi = (c1 − c2) / (m2 − m1)、y座標は yi = m1・xi + c1 という式で計算できます。

コード例

import matplotlib.pyplot as plt
import numpy as np

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

# 傾きと切片の初期化
m1, c1 = 0.1, 2.0
m2, c2 = 2.0, -3.0

# xデータ点の作成
x = np.linspace(-10, 10, 500)

# 2本の直線をプロット
plt.plot(x, x * m1 + c1, 'red')
plt.plot(x, x * m2 + c2, 'green')

# 軸の範囲を設定
plt.xlim(-2, 8)
plt.ylim(-2, 8)

# 交点を計算
xi = (c1 - c2) / (m2 - m1)
yi = m1 * xi + c1

# 交点を通る垂直線・水平線を破線で描画
plt.axvline(x=xi, color='gray', linestyle='--')
plt.axhline(y=yi, color='gray', linestyle='--')

# 交点を黒い点でマーク
plt.scatter(xi, yi, color='black')

plt.show()

実行結果

Matplotlibで2本の直線の交点を通る水平線と垂直線をプロットする方法

このコードを実行すると、赤色と緑色の2本の直線が描画され、それらが交わる点を灰色の破線(水平線・垂直線)と黒い点が示します。axvline()とaxhline()は指定した座標位置にそれぞれ垂直線・水平線を引く便利な関数であり、交点や特定の閾値を強調したい場合に非常に役立ちます。

  1. Python Matplotlibで単一のポイント(点)をプロットする方法

    Matplotlibを使えば、たった1つのデータポイントでも簡単にグラフ上へプロットできます。ここでは、単一の点をプロットするための基本的な手順を解説します。 単一ポイントをプロットする手順 x と y のリストを、単一の値で初期化します。 plt.xlim() および plt.ylim() を使って、X軸・Y軸の表示範囲を0〜5に設定します。 plt.grid() を呼び出して、現在の線スタイルでグリッドを描画します。 plot() メソッドでxとyをプロットし、marker=o、markeredgecolor=red、markerfacecolor=green を指定してマーカーの見た目

  2. Matplotlibで2本の点線をプロットする方法|マーカー・線種・凡例の設定も解説

    はじめに この記事では、Pythonの可視化ライブラリ「Matplotlib」を使って、2本の線を1つのグラフに描画し、それぞれに異なる線種(点線・破線)や色、太さを設定する方法を解説します。 コーディングを始める前に、まず次のコマンドでMatplotlibをインポートしておきましょう。 import matplotlib.pyplot as plt Pyplotは、MatplotlibをMATLABのように直感的に操作できるようにするためのコマンドスタイル関数のコレクションです。グラフの描画からラベル付けまで、ほとんどの操作をこのモジュール経由で行います。 アルゴリズム(処理の流れ) ステ