TL;DR ->
Matplotlib
'inPyPlot
programında herhangi bir ekstra değişken oluşturmadan bir çizgi grafik için nasıl bir gösterge oluşturulabilir?
Lütfen aşağıdaki grafik senaryosunu dikkate alın:
if __name__ == '__main__':
PyPlot.plot(total_lengths, sort_times_bubble, 'b-',
total_lengths, sort_times_ins, 'r-',
total_lengths, sort_times_merge_r, 'g+',
total_lengths, sort_times_merge_i, 'p-', )
PyPlot.title("Combined Statistics")
PyPlot.xlabel("Length of list (number)")
PyPlot.ylabel("Time taken (seconds)")
PyPlot.show()
Gördüğünüz gibi, bu matplotlib
'in PyPlot
unun çok temel bir kullanımıdır. Bu ideal olarak aşağıdaki gibi bir grafik oluşturur:
Özel bir şey değil, biliyorum. Ancak, hangi verinin nerede çizildiği belirsiz (bazı sıralama algoritmalarının verilerini çizmeye çalışıyorum, süreye karşı uzunluk ve insanların hangi çizginin hangisi olduğunu bildiğinden emin olmak istiyorum). Bu nedenle, aşağıdaki örneğe (resmi siteden) bakarak bir göstergeye ihtiyacım var:
ax = subplot(1,1,1)
p1, = ax.plot([1,2,3], label="line 1")
p2, = ax.plot([3,2,1], label="line 2")
p3, = ax.plot([2,3,1], label="line 3")
handles, labels = ax.get_legend_handles_labels()
# reverse the order
ax.legend(handles[::-1], labels[::-1])
# or sort them by labels
import operator
hl = sorted(zip(handles, labels),
key=operator.itemgetter(1))
handles2, labels2 = zip(*hl)
ax.legend(handles2, labels2)
Ekstra bir ax
değişkeni oluşturmam gerektiğini göreceksiniz. Bu ekstra değişkeni oluşturmak zorunda kalmadan ve mevcut kodumun basitliğini koruyarak grafiğime nasıl bir açıklama ekleyebilirim?
Her plot()
çağrınıza bir label=
ekleyin ve ardından legend(loc='upper left')
çağrısını yapın.
Bu örneği ele alalım (Python 3.8.0 ile test edilmiştir):
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 20, 1000)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, "-b", label="sine")
plt.plot(x, y2, "-r", label="cosine")
plt.legend(loc="upper left")
plt.ylim(-1.5, 2.0)
plt.show()
Bu öğreticiden biraz değiştirilmiştir: http://jakevdp.github.io/mpl_tutorial/tutorial_pages/tut1.html
İşte size yardımcı olacak bir örnek...
fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(111)
ax.set_title('ADR vs Rating (CS:GO)')
ax.scatter(x=data[:,0],y=data[:,1],label='Data')
plt.plot(data[:,0], m*data[:,0] + b,color='red',label='Our Fitting
Line')
ax.set_xlabel('ADR')
ax.set_ylabel('Rating')
ax.legend(loc='best')
plt.show()
Çizim çağrınızdaki her bağımsız değişkene, grafiğini çizdiği seriye karşılık gelen etiketler ekleyin, yani label = "series 1"
Ardından kodunuzun altına Pyplot.legend()
ekleyin ve gösterge bu etiketleri görüntüleyecektir.