Matplotlibで2つの直線の交点を求め、補助線を引く方法
Matplotlibを使えば、2つの直線の交点を計算し、その点を通る水平線・垂直線(補助線)を簡単に描画できます。この記事では、傾きと切片から交点を求める数式の考え方と、実際にグラフへ可視化する手順を、コード例とともにわかりやすく解説します。
実装の手順
- 図のサイズを設定し、サブプロット周りの余白を自動調整します。
- 2つの直線を傾き(m1, m2)と切片(c1, c2)で定義し、値を初期化します。
- numpyを使ってx軸のデータポイントを生成します。
- plot()メソッドで2本の直線を描画します。
- 傾きと切片の値から、2直線の交点を計算します。
- 点線スタイルで水平線と垂直線を描きます。
- 交点(xi, yi)を黒い点でプロットします。
- 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 = np.linspace(-10, 10, 500) 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()
出力結果

ポイント解説
このコードでは、np.linspace(-10, 10, 500)によって−10から10までの範囲を500分割した滑らかなデータを作成しています。axvline()とaxhline()はそれぞれ垂直線・水平線を描くための便利なメソッドで、linestyle='--'を指定することで破線(ダッシュ線)として補助線を表示できます。最後にscatter()で交点を黒いマーカーとして強調することで、2直線がどこで交わっているかが一目でわかるグラフになります。
-
Matplotlibでハッチの線幅を変更する方法
Matplotlibでハッチ(網掛け)の線幅を変更したい場合は、rcParamsの「hatch.linewidth」パラメータを設定することで実現できます。この記事では、具体的な手順とサンプルコードをわかりやすく解説します。実装の手順図のサイズを設定し、サブプロット間および周囲のパディングを調整します。NumPyを使用して、x および y = sin(x) のデータポイントを作成します。plt.rcParams[hatch.linewidth] を使って、ハッチの線幅を設定します。scatter() メソッドを使用し、「/」ハッチが付いた正方形マーカーで、設定した線幅を適用しながらxとyのデー
-
Matplotlibで2つのヒストグラムのビン幅を揃える方法
Matplotlibで2つのヒストグラムを比較する際、ビン幅が異なると正確な比較ができません。そこで、データセット全体から共通のビン境界を計算することで、両方のヒストグラムのビン幅を揃えることができます。手順ランダムデータ a と、正規分布に基づくデータ b を作成します。共通のビン幅を定義するための変数 bins を初期化します。hist() メソッドを使って、a と共通ビンでヒストグラムを描画します。hist() メソッドを使って、b と同じ共通ビンでヒストグラムを描画します。図を表示するには show() メソッドを使用します。サンプルコードimport numpy as np from