Saya mencoba membuat plot pencar dan membubuhi keterangan titik data dengan nomor yang berbeda dari daftar. Jadi, misalnya, saya ingin merencanakan y
vs x
dan membubuhi keterangan dengan nomor yang sesuai dari n
.
y = [2.56422, 3.77284, 3.52623, 3.51468, 3.02199]
z = [0.15, 0.3, 0.45, 0.6, 0.75]
n = [58, 651, 393, 203, 123]
ax = fig.add_subplot(111)
ax1.scatter(z, y, fmt='o')
Ada ide?
python
matplotlib
text
scatter-plot
annotate
Labibah
sumber
sumber
Jawaban:
Saya tidak mengetahui adanya metode plotting yang mengambil array atau daftar tetapi Anda bisa menggunakannya
annotate()
saat iterasi nilai-nilai din
.Ada banyak opsi pemformatan untuk
annotate()
, lihat situs web matplotlib:sumber
regplot
's tanpa terlalu banyak gangguan juga.KeyError
- jadi saya kira sebuahdict()
objek diharapkan? Apakah ada cara lain untuk memberi label data menggunakanenumerate
,annotate
dan bingkai data panda?for row in df.iterrows():
, dan kemudian mengakses nilai denganrow['text'], row['x-coord']
dll. Jika Anda memposting pertanyaan terpisah saya akan melihatnya.Dalam versi yang lebih awal dari matplotlib 2.0,
ax.scatter
tidak perlu merencanakan teks tanpa spidol. Di versi 2.0 Anda harusax.scatter
mengatur rentang dan penanda yang tepat untuk teks.Dan di tautan ini Anda dapat menemukan contoh dalam 3d.
sumber
plt.figure(figsize=(20,10))
tidak berfungsi seperti yang diharapkan, dalam hal menerapkan kode ini sebenarnya tidak mengubah ukuran gambar. Kami menantikan bantuan Anda. Terima kasih!Jika ada orang yang mencoba menerapkan solusi di atas untuk. Hamburkan () daripada .subplot (),
Saya mencoba menjalankan kode berikut
Tetapi mengalami kesalahan yang menyatakan "tidak dapat membongkar objek PathCollection yang tidak dapat diubah", dengan kesalahan secara khusus menunjuk pada codeline fig, ax = plt.scatter (z, y)
Saya akhirnya memecahkan kesalahan menggunakan kode berikut
Saya tidak berharap akan ada perbedaan antara .scatter () dan .subplot () saya seharusnya tahu lebih baik.
sumber
Anda juga dapat menggunakan
pyplot.text
(lihat di sini ).sumber
Python 3.6+:
sumber
Sebagai satu liner menggunakan pemahaman daftar dan numpy:
[ax.annotate(x[0], (x[1], x[2])) for x in np.array([n,z,y]).T]
pengaturan dikirim ke jawaban Rutger.
sumber
Saya ingin menambahkan bahwa Anda bahkan dapat menggunakan panah / kotak teks untuk membubuhi keterangan label. Inilah yang saya maksud:
Yang akan menghasilkan grafik berikut:
sumber