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"),
)
문서 에서는 첫 번째 인수로 빈 문자열이있는 화살표 만 그릴 수 있다고 말합니다.
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
.