Saya mencoba memplot beberapa estimasi kepadatan kernel pada grafik yang sama, dan saya ingin semuanya memiliki warna yang berbeda. Saya memiliki solusi kludged menggunakan string 'rgbcmyk'
dan melewatinya untuk setiap plot terpisah, tetapi saya mulai memiliki duplikat setelah 7 iterasi. Adakah cara yang lebih mudah / efisien untuk melakukan ini, dan dengan lebih banyak pilihan warna?
for n=1:10
source(n).data=normrnd(rand()*100,abs(rand()*50),100,1); %generate random data
end
cstring='rgbcmyk'; % color string
figure
hold on
for n=1:length(source)
[f,x]=ksdensity(source(n).data); % calculate the distribution
plot(x,f,cstring(mod(n,7)+1)) % plot with a different color each time
end
matlab
plot
matlab-figure
Doresoom
sumber
sumber
hold on
secara fungsional setara denganhold all
. Namun, pertanyaan tentang bagaimana mendapatkan lebih dari 7 warna default tetap ada. Peta warna default dapat menjadi solusi seperti yang dijelaskan oleh Azim atau fungsi untuk menghasilkan warna yang disetel untuk memudahkan diskriminasi visual dapat digunakan, seperti di bawah ini .hold all
saya mendapatkan plot dengan warna berbeda (meskipun harus saya katakan terlihat cukup kusam), sedangkan saat saya menggunakanhold on
, semua plot saya menjadi biru. Jadi saya bertanya-tanya apa persamaan fungsional itu.hold on
memberikan plot warna yang berbeda. Anda menggunakan dan versi yang lebih lama. Dari dokumen saat ini , "hold all
sama denganhold on
. Catatan: Sintaks ini akan dihapus di rilis mendatang. Gunakanhold on
sebagai gantinya." Lihat juga catatan rilis .Jawaban:
Anda bisa menggunakan peta warna seperti HSV untuk menghasilkan sekumpulan warna. Sebagai contoh:
MATLAB memiliki 13 peta warna yang berbeda ( 'doc colormap' mencantumkan semuanya).
Pilihan lain untuk memplot garis dalam warna berbeda adalah menggunakan properti LineStyleOrder ; lihat Menentukan Warna Garis untuk Plotting dalam dokumentasi MATLAB untuk informasi lebih lanjut.
sumber
hold all
solusi @Mark Elliot karena keserbagunaannya untuk dapat memilih peta warna yang berbeda.Sebenarnya, metode jalan pintas yang layak untuk mendapatkan warna untuk siklus adalah dengan menggunakan
hold all;
sebagai penggantihold on;
. Setiap berturutplot
- turut akan berputar (secara otomatis untuk Anda) melalui peta warna default MATLAB.Dari situs MATLAB di
hold
:sumber
Jawaban terlambat, tetapi dua hal yang perlu ditambahkan:
'ColorOrder'
properti dan cara menyetel default global dengan'DefaultAxesColorOrder'
, lihat "Lampiran" di bagian bawah posting ini.The
ColorOrder
axes
properti memungkinkan MATLAB untuk secara otomatis siklus melalui daftar warna saat menggunakanhold on/all
(sekali lagi, lihat Lampiran di bawah ini untuk caraset
/get
yangColorOrder
untuk sumbu tertentu atau global melaluiDefaultAxesColorOrder
). Namun, secara default MATLAB hanya menentukan daftar warna yang pendek ( hanya 7 pada R2013b) untuk digilir, dan di sisi lain mungkin bermasalah untuk menemukan kumpulan warna yang bagus untuk lebih banyak seri data. Untuk 10 plot, Anda jelas tidak bisa mengandalkan defaultColorOrder
.Cara terbaik untuk menentukan N warna yang berbeda secara visual adalah dengan pengiriman "Hasilkan Warna yang Berbeda Secara Perseptual Maksimal" (GMPDC) di MATLAB Central File Exchange . Ini paling baik dijelaskan dengan kata-kata penulis sendiri:
Misalnya, ketika 25 warna diminta:
Pengajuan GMPDC dipilih di blog resmi MathWorks sebagai Pick of the Week pada tahun 2010 sebagian karena kemampuan untuk meminta jumlah warna yang berubah-ubah (berbeda dengan MATLAB yang dibangun dalam 7 warna default). Mereka bahkan membuat saran yang sangat bagus untuk mengatur MATLAB
ColorOrder
saat startup ke,Tentu saja, Anda dapat menyetel
ColorOrder
untuk satu sumbu atau cukup membuat daftar warna untuk digunakan sesuka Anda. Misalnya, untuk menghasilkan 10 "warna yang berbeda secara persepsi maksimal" dan menggunakannya untuk 10 plot pada sumbu yang sama ( tetapi tidak menggunakanColorOrder
, sehingga membutuhkan loop ):Prosesnya disederhanakan, tidak memerlukan
for
loop, denganColorOrder
properti axis :LAMPIRAN
Untuk mendapatkan
ColorOrder
array RGB yang digunakan untuk sumbu saat ini,Untuk mendapatkan default
ColorOrder
sumbu baru,Contoh pengaturan global baru
ColorOrder
dengan 10 warna pada MATLAB mulai, distartup.m
:sumber
Terlambat ke pesta. Saya sedang melihat ke dalam ini sendiri dan baru saja menemukan tentang opsi sumbu ini yang disebut ColorOrder Anda dapat menentukan urutan warna untuk sesi atau hanya untuk gambar dan kemudian hanya memplot sebuah array dan membiarkan MATLAB secara otomatis berputar melalui warna yang ditentukan.
lihat Mengubah Urutan Warna Default
contoh
sumber
set(gca,'ColorOrder',jet(5));
Jika semua vektor memiliki ukuran yang sama, buat matriks dan plot. Setiap kolom diplot dengan warna yang berbeda secara otomatis Kemudian Anda dapat menggunakan
legend
untuk menunjukkan kolom:Atau, jika Anda memiliki sel dengan nama kernel, gunakan
sumber