Misalkan saya memiliki tiga set data:
X = [1,2,3,4]
Y1 = [4,8,12,16]
Y2 = [1,4,9,16]
Saya dapat menyebarkan plot ini:
from matplotlib import pyplot as plt
plt.scatter(X,Y1,color='red')
plt.scatter(X,Y2,color='blue')
plt.show()
Bagaimana saya bisa melakukan ini dengan 10 set?
Saya mencari ini dan dapat menemukan referensi apa pun yang saya minta.
Edit: mengklarifikasi (semoga) pertanyaan saya
Jika saya memanggil pencar beberapa kali, saya hanya dapat mengatur warna yang sama pada setiap pencar. Juga, saya tahu saya bisa mengatur array warna secara manual tapi saya yakin ada cara yang lebih baik untuk melakukan ini. Pertanyaan saya kemudian, "Bagaimana saya bisa secara otomatis menyebarkan-set beberapa set data saya, masing-masing dengan warna yang berbeda.
Jika itu membantu, saya dapat dengan mudah menetapkan nomor unik untuk setiap kumpulan data.
python
matplotlib
scatter-plot
Yotam
sumber
sumber
Jawaban:
Saya tidak tahu apa yang Anda maksud dengan 'secara manual'. Anda dapat memilih colourmap dan membuat array warna dengan cukup mudah:
Atau Anda dapat membuat pengendara sepeda warna Anda sendiri menggunakan
itertools.cycle
dan menentukan warna yang ingin Anda putar, gunakannext
untuk mendapatkan yang Anda inginkan. Misalnya, dengan 3 warna:Kalau dipikir-pikir, mungkin lebih bersih tidak digunakan
zip
dengan yang pertama juga:sumber
plt.legend(['c{}'.format(i) for i in range(len(ys))], loc=2, bbox_to_anchor=(1.05, 1), borderaxespad=0., fontsize=11)
ke bagian bawah di atas memberi saya legenda dengan warna.Cara normal untuk memplot plot dengan titik dalam warna berbeda di matplotlib adalah dengan memberikan daftar warna sebagai parameter.
Misalnya:
Ketika Anda memiliki daftar daftar dan Anda ingin mereka diwarnai per daftar. Saya pikir cara yang paling elegan adalah yang disarankan oleh @DSM, cukup lakukan satu lingkaran membuat beberapa panggilan untuk tersebar.
Tetapi jika karena alasan tertentu Anda ingin melakukannya hanya dengan satu panggilan, Anda dapat membuat daftar warna yang besar, dengan pemahaman daftar dan sedikit pembagian lantai:
sumber
Perbaikan yang mudah
Jika Anda hanya memiliki satu jenis koleksi (mis. Pencar tanpa bilah kesalahan), Anda juga dapat mengubah warna setelah memplotnya, terkadang ini lebih mudah dilakukan.
Satu-satunya bagian dari kode yang Anda butuhkan:
Outputnya memberi Anda warna yang berbeda bahkan ketika Anda memiliki banyak plot pencar yang berbeda di subplot yang sama.
sumber
Anda selalu dapat menggunakan
plot()
fungsi seperti ini:sumber
Pertanyaan ini agak sulit sebelum Jan 2013 dan matplotlib 1.3.1 (Agu 2013), yang merupakan versi stabil tertua yang dapat Anda temukan di situs web matpplotlib. Namun setelah itu cukup sepele.
Karena versi sekarang
matplotlib.pylab.scatter
penugasan dukungan: array string nama warna, array nomor float dengan peta warna, array RGB atau RGBA.jawaban ini didedikasikan untuk hasrat tak berujung @ Oxinabox untuk memperbaiki versi 2013 diriku pada tahun 2015.
Anda memiliki dua opsi untuk menggunakan perintah pencar dengan beberapa warna dalam satu panggilan.
sebagai
pylab.scatter
dukungan perintah gunakan array RGBA untuk melakukan warna apa pun yang Anda inginkan;kembali pada awal 2013, tidak ada cara untuk melakukannya, karena perintah hanya mendukung satu warna untuk seluruh koleksi titik pencar. Ketika saya sedang mengerjakan proyek 10000-line saya, saya mencari solusi umum untuk memotongnya. jadi sangat norak, tapi saya bisa melakukannya dalam bentuk, warna, ukuran dan transparan apa pun. Trik ini juga bisa diterapkan untuk menggambar jalur koleksi, koleksi garis ....
kode ini juga terinspirasi oleh kode sumber
pyplot.scatter
, saya hanya menduplikasi apa yang dilakukan pencar tanpa memicu untuk menggambar.perintah
pyplot.scatter
mengembalikanPatchCollection
Objek, dalam file "matplotlib / collections.py" variabel pribadi_facecolors
diCollection
kelas dan metodeset_facecolors
.jadi kapan pun Anda memiliki poin sebar untuk menggambar, Anda bisa melakukan ini:
sumber
Ini bekerja untuk saya:
untuk setiap seri, gunakan penghasil warna rgb acak
sumber
plt.scatter(your values to the graph, color= (np.random.random_sample(), np.random.random_sample(), np.random.random_sample()) )
. Anda menyebutkan generator RGB dan menyatakan daftar RGB, generator dideklarasikan antara '()'Solusi JAUH lebih cepat untuk dataset besar dan jumlah warna terbatas adalah penggunaan Pandas dan fungsi groupby:
sumber