Saya merencanakan dataset kategori dan ingin menggunakan warna khusus untuk mewakili kategori yang berbeda. Diberi nomor n
, bagaimana saya bisa mendapatkan n
warna paling PALING dalam R? Terima kasih.
130
Saya merencanakan dataset kategori dan ingin menggunakan warna khusus untuk mewakili kategori yang berbeda. Diberi nomor n
, bagaimana saya bisa mendapatkan n
warna paling PALING dalam R? Terima kasih.
Jawaban:
Saya bergabung dengan semua palet kualitatif dari
RColorBrewer
paket. Palet kualitatif masing-masing memberikan X warna paling khas. Tentu saja, menggabungkan mereka bergabung menjadi satu palet juga warna yang sama, tapi itu yang terbaik yang bisa saya dapatkan (74 warna).Solusi lain adalah: ambil semua warna R dari perangkat grafis dan sampel dari mereka. Saya menghapus nuansa abu-abu karena terlalu mirip. Ini memberi 433 warna
dengan 200 warna
n = 200
:sumber
col
ke nama warna yang sesuai?col
Anda maksud? yangcolor
dari perangkat grafis memiliki nama. Jika maksud Anda secara umum, tidak semua kode heks memiliki nama warna yang sesuai (hanya ada 433 warnagrDevices
tetapi ada lebih banyak kode heks)col=sample(col_vector, n)
dariRColorBrewer
paket dalam potongan kode Anda. Misalnya, Cara menemukan nama warna untuk#B3E2CD, #E78AC3, #B3DE69
tersedia darisample(col_vector,3)
. Atau, Cara menemukan semua kode hex yang diberikan olehbrewer.pal
fungsi dengan nama warnanya.RColorBrewer
palet tidak berasal darigrDevices
warna, yang memiliki nama yang dipetakan, tetapi hanya kode hex, setahu saya, Anda tidak dapat melakukan ini denganRColorBrewer
palet, bahkan yang kualitatif.Berikut ini beberapa opsi:
Lihatlah
palette
fungsinya:Dan
colorRampPalette
fungsinya:Lihatlah
colorBrewer
paket (dan situs web ). Jika Anda ingin warna yang berbeda, maka pilih diverging di situs. Sebagai contoh,Situs web saya ingin rona memberikan banyak palet bagus. Sekali lagi, cukup pilih palet yang Anda butuhkan. Misalnya, Anda bisa mendapatkan warna rgb dari situs dan membuat palet sendiri:
sumber
I want hue
adalah situs web yang luar biasa. Inilah yang saya inginkan. Diberi nomor, cara menghasilkan palet dari jumlah warna. tetapi bisakah kita melakukannya di R secara otomatis?i want hue
memiliki API yang memungkinkan untuk secara otomatis ditanyai (mungkin memang - saya tidak menghabiskan waktu lama mencari)i want hue
, di sini . Efisiensi dapat ditingkatkan (misalnya dengan menyimpan sampel warna sebagai objek data), tetapi gagasan umum ada di sana. (Muat dengandevtools::source_gist('45b49da5e260a9fc1cd7')
)Anda juga dapat mencoba
randomcoloR
paket :Anda dapat melihat bahwa serangkaian warna yang sangat berbeda dipilih saat memvisualisasikan dalam diagram lingkaran (seperti yang disarankan oleh jawaban lain di sini):
Ditampilkan dalam diagram lingkaran dengan 50 warna:
sumber
unname(distinctColorPalette(n))
untuk membuat ini berfungsi dengan ggplot. Saya kira ggplot membutuhkan vektor yang tidak disebutkan namanya.col_vector <- unname(distinctColorPalette(n))
dan kemudian... + scale_color_manual(values=col_vector) ...
Bukan jawaban untuk pertanyaan OP tetapi perlu disebutkan bahwa ada
viridis
paket yang memiliki palet warna yang bagus untuk data sekuensial. Mereka secara seragam seragam, buta warna dan ramah printer.Untuk mendapatkan palet, cukup instal paket dan gunakan fungsi
viridis_pal()
. Ada empat opsi "A", "B", "C" dan "D" untuk dipilihAda juga pembicaraan luar biasa yang menjelaskan kompleksitas colormaps yang baik di YouTube:
Colormap Default yang Lebih Baik untuk Matplotlib | SciPy 2015 | Nathaniel Smith dan Stéfan van der Walt
sumber
Anda dapat menggunakan
colorRampPalette
dari pangkalan atauRColorBrewer
paket:Dengan
colorRampPalette
, Anda dapat menentukan warna sebagai berikut:Anda juga dapat memberikan kode hex juga:
Dengan
RColorBrewer
Anda dapat menggunakan warna dari palet yang sudah ada:Lihatlah
RColorBrewer
paket untuk palet lain yang tersedia. Semoga ini membantu.sumber
brewer.pal
. tetapi terbatas hingga 9 warna. Saya sebenarnya memiliki lebih dari 9 kategori. Alternatif pertama menghasilkan warna gradien, yang tidak berbeda seperti yang saya inginkan.Saya akan merekomendasikan untuk menggunakan sumber eksternal untuk palet warna besar.
http://tools.medialab.sciences-po.fr/iwanthue/
memiliki layanan untuk menyusun berbagai ukuran palet sesuai dengan berbagai parameter dan
/graphicdesign/3682/where-can-i-find-a-large-palette-set-of-contrasting-colors-for-coloring-many-d/3815
membahas masalah umum dari perspektif desainer grafis dan memberikan banyak contoh palet yang dapat digunakan.
Untuk menyusun palet dari nilai RGB Anda hanya perlu menyalin nilai dalam vektor seperti misalnya:
sumber
Saya menemukan situs web yang menawarkan daftar 20 warna berbeda: https://sashat.me/2017/01/11/list-of-20-simple-distinct-colors/
Anda bisa mencoba!
sumber
n
warna yang berbeda, bukan satu set warna yang ditentukan. Coba perbarui jawaban AndaAnda dapat menghasilkan serangkaian warna seperti ini:
Warna-warna ini sejelas mungkin. Untuk warna-warna yang serupa, mereka membentuk gradien sehingga Anda dapat dengan mudah membedakannya.
sumber
Dalam pemahaman saya, mencari warna khusus terkait dengan pencarian efisien dari unit cube, di mana 3 dimensi dari kubus adalah tiga vektor sepanjang sumbu merah, hijau dan biru. Ini dapat disederhanakan untuk mencari dalam silinder (analogi HSV), di mana Anda memperbaiki Saturasi (S) dan Nilai (V) dan menemukan nilai Hue acak. Ini berfungsi dalam banyak kasus, dan lihat ini di sini:
https://martin.ankerl.com/2009/12/09/how-to-create-random-colors-programmatically/
Dalam R,
Cara alternatif, adalah dengan menggunakan paket R "seragam" https://cran.r-project.org/web/packages/uniformly/index.html
dan fungsi sederhana ini dapat menghasilkan warna yang berbeda:
Seseorang dapat memikirkan sedikit lebih banyak fungsi yang terlibat dengan pencarian-grid:
periksa fungsi ini dengan:
Namun, perhatikan bahwa, mendefinisikan palet yang berbeda dengan warna yang dapat dilihat manusia tidaklah sederhana. Manakah dari pendekatan di atas menghasilkan set warna yang beragam belum diuji.
sumber
Anda dapat menggunakan paket Polikrom untuk tujuan ini. Itu hanya membutuhkan jumlah warna dan beberapa
seedcolors
. Sebagai contoh:Anda dapat mempelajari lebih lanjut tentang paket ini di https://www.jstatsoft.org/article/view/v090c01 .
sumber