Matplolib sekarang mengizinkan 'baris anotasi' seperti yang dicari OP. The annotate()
Fungsi memungkinkan beberapa bentuk menghubungkan jalur dan tanpa kepala dan tailess panah, yaitu, garis sederhana, adalah salah satunya.
ax.annotate("",
xy=(0.2, 0.2), xycoords='data',
xytext=(0.8, 0.8), textcoords='data',
arrowprops=dict(arrowstyle="-",
connectionstyle="arc3, rad=0"),
)
Dalam dokumentasi dikatakan bahwa Anda hanya dapat menggambar panah dengan string kosong sebagai argumen pertama.
Dari contoh 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()
Seperti pada pendekatan dalam jawaban gcalmettes, Anda dapat memilih warna, lebar garis, gaya garis, dll.
Berikut adalah perubahan pada bagian kode yang akan membuat salah satu dari dua baris contoh menjadi merah, lebih lebar, dan tidak 100% buram.
# 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."),
)
Anda juga dapat menambahkan kurva ke garis penghubung dengan menyesuaikan connectionstyle
.