Matplotlib scatter plot legend
Saya membuat sebuah 4D scatter plot grafik untuk mewakili suhu yang berbeda di daerah tertentu. Ketika saya membuat legenda, legenda menunjukkan simbol yang benar dan warna, tetapi menambahkan garis melalui itu. Kode I'm menggunakan adalah:
colors=['b', 'c', 'y', 'm', 'r']
lo = plt.Line2D(range(10), range(10), marker='x', color=colors[0])
ll = plt.Line2D(range(10), range(10), marker='o', color=colors[0])
l = plt.Line2D(range(10), range(10), marker='o',color=colors[1])
a = plt.Line2D(range(10), range(10), marker='o',color=colors[2])
h = plt.Line2D(range(10), range(10), marker='o',color=colors[3])
hh = plt.Line2D(range(10), range(10), marker='o',color=colors[4])
ho = plt.Line2D(range(10), range(10), marker='x', color=colors[4])
plt.legend((lo,ll,l,a, h, hh, ho),('Low Outlier', 'LoLo','Lo', 'Average', 'Hi', 'HiHi', 'High Outlier'),numpoints=1, loc='lower left', ncol=3, fontsize=8)
Saya mencoba mengubah Line2D
untuk Menyebarkan
dan menyebar
. Menyebarkan
kembali kesalahan dan menyebarkan
berubah grafik dan kembali kesalahan.
Dengan menyebarkan
, aku berubah range(10)
ke daftar yang berisi titik-titik data. Setiap daftar berisi baik x, y, atau z variabel.
lo = plt.scatter(xLOutlier, yLOutlier, zLOutlier, marker='x', color=colors[0])
ll = plt.scatter(xLoLo, yLoLo, zLoLo, marker='o', color=colors[0])
l = plt.scatter(xLo, yLo, zLo, marker='o',color=colors[1])
a = plt.scatter(xAverage, yAverage, zAverage, marker='o',color=colors[2])
h = plt.scatter(xHi, yHi, zHi, marker='o',color=colors[3])
hh = plt.scatter(xHiHi, yHiHi, zHiHi, marker='o',color=colors[4])
ho = plt.scatter(xHOutlier, yHOutlier, zHOutlier, marker='x', color=colors[4])
plt.legend((lo,ll,l,a, h, hh, ho),('Low Outlier', 'LoLo','Lo', 'Average', 'Hi', 'HiHi', 'High Outlier'),scatterpoints=1, loc='lower left', ncol=3, fontsize=8)
Ketika saya menjalankan ini, legenda tidak ada lagi, itu adalah sebuah kotak putih kecil di sudut dengan apa-apa di dalamnya.
Ada saran?
50
4
2D scatter plot
Menggunakan
menyebarkan
metodematplotlib.pyplot
modul harus bekerja (setidaknya dengan matplotlib 1.2.1 dengan Python 2.7.5), seperti pada contoh kode di bawah ini. Juga, jika anda menggunakan scatter plot, gunakanscatterpoints=1
daripadanumpoints=1
legenda panggilan untuk hanya memiliki satu titik untuk setiap legenda entri.Dalam kode di bawah ini saya've digunakan nilai acak daripada merencanakan kisaran yang sama berulang-ulang, membuat semua plot terlihat (yaitu tidak tumpang tindih satu sama lain).
3D scatter plot
Untuk plot pencar di 3D, gunakan
plot
metode, seperti legenda yang tidak mendukungPatch3DCollection
sebagai dikembalikan olehmenyebarkan
metodeAxes3D
misalnya. Untuk menentukan markerstyle anda dapat memasukkan ini sebagai posisi argumen dalam metode panggilan, seperti yang terlihat pada contoh di bawah ini. Opsional satu dapat memiliki argumen untuk kedualinestyle
danpenanda
parameter.Berikut ini's cara yang lebih mudah untuk melakukan hal ini (sumber: di sini):
Dan anda'akan mendapatkan ini:
Lihat di sini untuk legenda sifat
jika anda menggunakan matplotlib versi 3.1.1 atau di atas, anda dapat mencoba:
Jawaban yang lain tampak sedikit rumit, anda hanya dapat menambahkan sebuah parameter 'label' dalam menyebarkan fungsi dan yang akan menjadi legenda untuk rencana anda.
Berikut ini adalah output