Saya sedang mengerjakan proyek perangkat lunak yang melibatkan pembuatan visualizer untuk simulasi banjir. Sebagai bagian dari proyek ini, saya telah membuat gradien air yang menunjukkan kedalaman air pada titik-titik tertentu. Untuk mengatur nilai apa yang akan mewakili warna apa, saya mencari data dan mendapatkan nilai minimum dan maksimum yang terjadi dan mendistribusikan warna secara merata sesuai skala itu.
Namun, sering kali poin dalam simulasi ini memiliki air yang lebih dalam secara signifikan daripada di tempat lain dalam simulasi. Hal ini menyebabkan sebagian besar titik di peta memiliki warna yang sangat mirip dan ini tidak terlalu informatif dan membuat area di mana airnya lebih dalam sangat sulit untuk dilihat.
Tujuan saya adalah mendedikasikan rentang warna yang lebih besar untuk kedalaman yang lebih sering terjadi. Misalnya, jika kedalaman berubah dari 0 ke 12 tetapi sebagian besar kedalaman antara 1 dan 2, saya ingin lebih banyak variasi warna terjadi dalam rentang itu daripada antara katakan 11 dan 12 atau 4 dan 5. Sepertinya saya perlu menggunakan deviasi standar atau sesuatu yang melibatkan distribusi normal untuk melakukan ini, tetapi saya agak bingung tentang bagaimana hal-hal ini bekerja dan bagaimana saya dapat menggunakannya untuk mencapai tujuan saya.
Bantuan apa pun yang dapat diberikan akan dihargai. Terima kasih.
sumber
Jawaban:
Sepertinya Anda mungkin ingin mendedikasikan setiap warna di palet Anda dengan jumlah data yang kira-kira sama.
Untuk mengilustrasikan, berikut adalah histogram dari satu set110 bacaan kedalaman simulasi:
Bayangkan ini dihaluskan. Dengan melakukan hal itu, histogram dapat diiris secara merata menjadi segmen vertikal dengan luas yang sama, menggunakan sebanyak mungkin irisan yang Anda suka (saya menggunakan10 potongan untuk contoh ini.) Untuk menjaga daerah yang sama, irisan harus kurus di mana histogram tinggi - yaitu, di mana ada banyak data - dan lemak di mana histogram rendah - yaitu, di mana ada sedikit data.
Salah satu cara untuk menyelesaikan pemotongan dengan mudah adalah memplot jumlah total data ("proporsi kumulatif") terhadap kedalaman. Iris sumbu vertikal menjadi interval genap, kemudian baca kedalaman di mana irisan melintasi plot: gunakan itu sebagai titik potong untuk memvisualisasikan kedalaman.
Algoritma untuk menghitung cutpoint dari data harus jelas dan mudah ditulis di hampir semua bahasa pemrograman: mengurutkan nilai, memecah daftar menjadi kelompok dengan ukuran yang hampir sama, dan memilih cutpoint untuk memisahkan nilai terbesar di setiap grup dari nilai terkecil dalam kelompok yang berhasil itu.
sumber
Meskipun jawaban @ whuber hanya memberikan apa yang Anda minta, saya ingin mengingatkan bahwa apa yang Anda minta mungkin bukan cara terbaik untuk secara visual mewakili data Anda, karena dua alasan.
Anda tahu aplikasi Anda yang terbaik, tentu saja, jadi saya tidak bisa mengatakan apa jawaban yang benar, tetapi di bawah ini adalah beberapa alternatif menggunakan data yang dihasilkan oleh
Data berubah dari 0 menjadi 12,5 dengan distribusi berikut:
Plot permukaan 3-D menunjukkan beberapa puncak, palung dangkal, dan gundukan kecil:
Sekarang mari kita lihat beberapa plot kontur 2-D.
Pemetaan warna linier lurus, yang melewatkan fitur yang lebih kecil seperti yang Anda perhatikan:
Jika variasi di area yang dalam tidak penting, maka memotong pemetaan warna memungkinkan lebih banyak warna untuk kedalaman yang lebih kecil sambil mempertahankan pemetaan linier di area itu:
Sebagai perbandingan, inilah tampilan berwarna pangkat (maaf legenda saya adalah nilai pangkat, bukan nilai kedalaman):
Saya tidak yakin apakah itu representasi yang bagus untuk aplikasi Anda atau tidak. Detail dalam palung dangkal dilebih-lebihkan. Pemetaan warna log serupa dan memiliki keuntungan memiliki beberapa interpretasi nyata dan dapat konsisten di seluruh set data, tetapi log masih belum perseptual (permintaan maaf lagi untuk legenda):
Akhirnya, inilah pendekatan dalam arah yang sedikit berbeda yang dapat dikombinasikan dengan salah satu di atas untuk meningkatkan resolusi: pemetaan warna multi-warna. Dalam hal ini, pewarnaannya linear dan terpotong:
Pasca-akhirnya, suatu pendekatan yang tidak mudah diizinkan oleh perangkat lunak saya adalah dengan menggunakan pemetaan warna linear multi-warna, yang telah saya lihat di beberapa peta ketinggian. Sebagai contoh, ketinggian rendah adalah hijau dengan peningkatan 50 kaki, ketinggian tengah adalah tan dengan penambahan 200 kaki dan tertinggi adalah abu-abu dengan kenaikan 800 kaki.
Intinya : lebih baik jika otak pemirsa bekerja dengan sistem persepsi visual Anda daripada menentangnya.
sumber