Matplolib現在允許OP尋求「註釋行」。 annotate()
功能允許幾種形式的連接路徑和無頭和無尾箭頭,即簡單的線條就是其中之一。
ax.annotate("",
xy=(0.2, 0.2), xycoords='data',
xytext=(0.8, 0.8), textcoords='data',
arrowprops=dict(arrowstyle="-",
connectionstyle="arc3, rad=0"),
)
在the documentation它說,你可以用一個空字符串作爲第一個參數只畫一個箭頭。
從OP的例子:
%matplotlib notebook
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.annotate("",
xy=(70, 100), xycoords='data',
xytext=(70, 250), textcoords='data',
arrowprops=dict(arrowstyle="-",
connectionstyle="arc3,rad=0."),
)
# draw diagonal line from (70, 90) to (90, 200)
plt.annotate("",
xy=(70, 90), xycoords='data',
xytext=(90, 200), textcoords='data',
arrowprops=dict(arrowstyle="-",
connectionstyle="arc3,rad=0."),
)
plt.show()
正如在gcalmettes的答案的辦法,你可以選擇顏色,線寬,線型等。
這是對代碼的一部分的改動,它會使兩個示例行中的一行紅色,更寬,而不是100%不透明。
# draw vertical line from (70,100) to (70, 250)
plt.annotate("",
xy=(70, 100), xycoords='data',
xytext=(70, 250), textcoords='data',
arrowprops=dict(arrowstyle="-",
edgecolor = "red",
linewidth=5,
alpha=0.65,
connectionstyle="arc3,rad=0."),
)
您還可以通過調整connectionstyle
向連接線添加曲線。
優秀和完整的插圖!非常感謝! –
稍作修改,上面的代碼應該讀取'x = np.arange(1,101)'。 –
這不會畫出一條線,而只是一條線段。如何畫出一條線來拋出兩個給定的問題仍然沒有答案。 – Alexey