135

私はpython/matplotlibとipythonノートブックでの使用の両方にかなり慣れていません。既存のグラフにいくつかの注釈線を追加しようとしていますが、グラフに線を描画する方法がわかりません。したがって、たとえば、次のようにプロットすると:

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、線分を追加する Segment() 関数を使用するだけです。に相当するものはありmatplotlibますか?

4

5 に答える 5

211

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()

新しいチャート

于 2012-10-12T19:43:42.340 に答える
71

新参者に遅すぎることはありません。

plt.axvline(x, color='r') # vertical
plt.axhline(x, color='r') # horizontal

yと を使用してymin、の範囲も取りますymax

于 2014-11-21T22:27:38.840 に答える
42

使用vlines:

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")
vlines(70,100,250)

基本的な呼び出し署名は次のとおりです。

vlines(x, ymin, ymax)
hlines(y, xmin, xmax)
于 2012-10-12T17:46:35.077 に答える