1. ホーム
  2. matplotlib

[解決済み] ipython notebook で matplotlib のプロットに任意の直線を追加する

2022-06-19 03:18:02

質問

私はpython/matplotlibとipython notebookを通してそれを使うのはどちらかというと初めてです。私は既存のグラフにいくつかの注釈線を追加しようとしていますが、グラフ上の線をレンダリングする方法を見つけ出すことができません。例えば、以下のようにプロットすると。

import numpy as np
np.random.seed(5)
x = arange(1, 101)
y = 20 + 3 * x + np.random.normal(0, 60, 100)
p =  plot(x, y, "o")

以下のようなグラフが得られます。

では、(70,100)から(70,250)までの縦線はどのように追加すればいいのでしょうか?(70,100)から(90,200)までの斜めの線はどうでしょうか?

いくつか試してみたのですが Line2D() でいくつかのことを試しましたが、私の側では混乱するばかりでした。で R では、単に線分を追加する segments() 関数を使用します。同等のものが matplotlib ?

どのように解決するのですか?

を送り込むことで、欲しい線を直接プロットすることができます。 plot コマンドに対応するデータ (セグメントの境界線) を与えることで、欲しい線を直接プロットすることができます。

plot([x1, x2], [y1, y2], color='k', linestyle='-', linewidth=2)

(もちろん色、線幅、線種など選択可能です)

あなたの例から

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(5)
x = np.arange(1, 101)
y = 20 + 3 * x + np.random.normal(0, 60, 100)
plt.plot(x, y, "o")


# draw vertical line from (70,100) to (70, 250)
plt.plot([70, 70], [100, 250], 'k-', lw=2)

# draw diagonal line from (70, 90) to (90, 200)
plt.plot([70, 90], [90, 200], 'k-')

plt.show()

<イグ