Saya TIDAK ingin menentukan warna untuk setiap garis yang diplot, dan meminta setiap baris mendapatkan warna yang berbeda. Tetapi jika saya menjalankan:
from matplotlib import pyplot as plt
for i in range(20):
plt.plot([0, 1], [i, i])
plt.show()
maka saya mendapatkan output ini:
Jika Anda melihat gambar di atas, Anda dapat melihat bahwa matplotlib mencoba memilih warna untuk setiap baris yang berbeda, tetapi pada akhirnya ia menggunakan kembali warna - sepuluh baris teratas menggunakan warna yang sama dengan sepuluh baris terbawah. Saya hanya ingin menghentikannya mengulangi warna yang sudah digunakan DAN / ATAU memberinya daftar warna yang akan digunakan.
matplotlib
dlamotte.dll
sumber
sumber
[colormap(i) for i in np.linspace(0, 0.9, num_plots)]
manacolormap
salah satu peta warnamatplotlib.pyplot.cm
dannumplots
nomornya warna unik yang Anda inginkan. Berhati-hatilah karena hal ini dapat menyebabkan warna yang sulit dibedakan satu sama lain !!Saya biasanya menggunakan yang kedua dari ini:
Contoh 2:
sumber
prop_cycle
color_cycle
tidak digunakan lagi di 1.5 karena mendukung generalisasi ini: http://matplotlib.org/users/whats_new.html#added-axes-prop-cycle-key-to-rcparamsJuga ditampilkan dalam contoh (sekarang bernama buruk): http://matplotlib.org/1.5.1/examples/color/color_cycle_demo.html disebutkan di: https://stackoverflow.com/a/4971431/895245
Diuji di matplotlib 1.5.1.
sumber
Saya tidak tahu apakah Anda dapat mengubah warna secara otomatis, tetapi Anda dapat memanfaatkan loop Anda untuk menghasilkan warna yang berbeda:
Dalam hal ini, warna akan bervariasi dari hitam hingga 100% hijau, tetapi Anda dapat menyesuaikannya jika mau.
Lihat dokumen matplotlib plot () dan cari
color
argumen kata kunci.Jika Anda ingin memberi makan daftar warna, pastikan Anda memiliki daftar yang cukup besar dan kemudian gunakan indeks loop untuk memilih warna
sumber
Anda dapat menggunakan "peta warna kualitatif" yang telah ditentukan sebelumnya seperti ini:
Diuji pada matplotlib 3.0.3. Lihat https://github.com/matplotlib/matplotlib/issues/10840 untuk diskusi tentang mengapa Anda tidak dapat menelepon
axes.set_prop_cycle(color=cmap)
.Daftar peta warna kualitatif yang telah ditentukan tersedia di https://matplotlib.org/gallery/color/colormap_reference.html :
sumber
Anda juga dapat mengubah siklus warna default di
matplotlibrc
file Anda . Jika Anda tidak tahu di mana file itu, lakukan hal berikut dengan python:Ini akan menunjukkan kepada Anda jalur ke file matplotlibrc yang saat ini Anda gunakan. Dalam file itu Anda akan menemukan di antara banyak pengaturan lain juga yang untuk
axes.color.cycle
. Masukkan saja urutan warna yang Anda inginkan dan Anda akan menemukannya di setiap plot yang Anda buat. Perhatikan bahwa Anda juga dapat menggunakan semua nama warna html yang valid di matplotlib.sumber
Sebagai catatan jawaban Ciro , Anda dapat menggunakan
prop_cycle
untuk mengatur daftar warna untuk matplotlib untuk digilir. Tapi berapa warnanya? Bagaimana jika Anda ingin menggunakan siklus warna yang sama untuk banyak plot, dengan jumlah garis yang berbeda?Salah satu taktiknya adalah menggunakan rumus seperti yang ada di https://gamedev.stackexchange.com/a/46469/22397 , untuk menghasilkan urutan warna yang tak terbatas di mana setiap warna mencoba menjadi berbeda secara signifikan dari semua yang sebelumnya.
Sayangnya,
prop_cycle
tidak akan menerima urutan tak terbatas - itu akan menggantung selamanya jika Anda melewatinya. Tapi kita bisa mengambil, katakanlah, 1000 warna pertama yang dihasilkan dari urutan seperti itu, dan mengaturnya sebagai siklus warna. Dengan begitu, untuk plot dengan jumlah garis yang wajar, Anda akan mendapatkan warna yang dapat dibedakan.Contoh:
Keluaran:
Sekarang, semua warna berbeda - meskipun saya akui bahwa saya kesulitan membedakan beberapa di antaranya!
sumber