カテゴリデータセットをプロットしており、異なるカテゴリを表すために独特の色を使用したい。数n
が与えられた場合、Rでn
個の最も特徴的な色を取得するにはどうすればよいですか?ありがとう。
RColorBrewer
パッケージのすべての定性パレットに参加しました。定性パレットは、それぞれX個の最も特徴的な色を提供することになっています。もちろん、それらを混合すると、同様の色の1つのパレットに結合されますが、それが最高です(74色)。
library(RColorBrewer)
n <- 60
qual_col_pals = brewer.pal.info[brewer.pal.info$category == 'qual',]
col_vector = unlist(mapply(brewer.pal, qual_col_pals$maxcolors, rownames(qual_col_pals)))
pie(rep(1,n), col=sample(col_vector, n))
他の解決策は、すべてのRカラーをグラフィカルデバイスから取得し、それらからサンプルを取得することです。グレーの色合いはあまりにも似ているので削除しました。これにより、433色が得られます
color = grDevices::colors()[grep('gr(a|e)y', grDevices::colors(), invert = T)]
pie(rep(1,n), col=sample(color, n))
200色のn = 200
:
pie(rep(1,n), col=sample(color, n))
以下にいくつかのオプションを示します。
palette
関数をご覧ください。
palette(Rainbow(6)) # six color Rainbow
(palette(gray(seq(0,.9,len = 25)))) #grey scale
そしてcolorRampPalette
関数:
##Move from blue to red in four colours
colorRampPalette(c("blue", "red"))( 4)
colorBrewer
パッケージ(および website )を見てください。色を変える場合は、サイトでdivergingを選択します。例えば、
library(colorBrewer)
brewer.pal(7, "BrBG")
私は色相が欲しい ウェブサイトはたくさんの素敵なパレットを提供します。繰り返しますが、必要なパレットを選択するだけです。たとえば、サイトからRGBカラーを取得して、独自のパレットを作成できます。
palette(c(rgb(170,93,152, maxColorValue=255),
rgb(103,143,57, maxColorValue=255),
rgb(196,95,46, maxColorValue=255),
rgb(79,134,165, maxColorValue=255),
rgb(205,71,103, maxColorValue=255),
rgb(203,77,202, maxColorValue=255),
rgb(115,113,206, maxColorValue=255)))
randomcoloR
package を試すこともできます:
library(randomcoloR)
n <- 20
palette <- distinctColorPalette(n)
円グラフで視覚化するときに、非常に明確な色のセットが選択されていることがわかります(他の回答で提案されています)。
pie(rep(1, n), col=palette)
50色の円グラフで表示:
n <- 50
palette <- distinctColorPalette(n)
pie(rep(1, n), col=palette)
OPの質問に対する答えではありませんが、シーケンシャルデータに適したカラーパレットを持つ viridis
パッケージがあることに言及する価値があります。それらは知覚的に均一で、色盲で安全で、プリンターに優しいです。
パレットを取得するには、パッケージをインストールし、viridis_pal()
関数を使用するだけです。選択する4つのオプション「A」、「B」、「C」、「D」があります
install.packages("viridis")
library(viridis)
viridis_pal(option = "D")(n) # n = number of colors seeked
YouTubeの優れたカラーマップの複雑さを説明する素晴らしい講演もあります。
Matplotlibのより良いデフォルトカラーマップ| SciPy 2015 |ナサニエルスミスとステファンファンデルウォルト
ベースのcolorRampPalette
またはRColorBrewer
パッケージを使用できます。
colorRampPalette
を使用すると、次のように色を指定できます。
colorRampPalette(c("red", "green"))(5)
# [1] "#FF0000" "#BF3F00" "#7F7F00" "#3FBF00" "#00FF00"
または、16進コードを提供することもできます。
colorRampPalette(c("#3794bf", "#FFFFFF", "#df8640"))(5)
# [1] "#3794BF" "#9BC9DF" "#FFFFFF" "#EFC29F" "#DF8640"
# Note that the mid color is the mid value...
RColorBrewer
を使用すると、既存のパレットの色を使用できます。
require(RColorBrewer)
brewer.pal(9, "Set1")
# [1] "#E41A1C" "#377EB8" "#4DAF4A" "#984EA3" "#FF7F00" "#FFFF33" "#A65628" "#F781BF"
# [9] "#999999"
他の使用可能なパレットについては、RColorBrewer
パッケージをご覧ください。お役に立てれば。
大きなカラーパレットには外部ソースを使用することをお勧めします。
http://tools.medialab.sciences-po.fr/iwanthue/
さまざまなパラメータに応じて任意のサイズのパレットを作成するサービスがあり、
グラフィックデザイナーの観点から一般的な問題について説明し、使用可能なパレットの例を多数提供します。
RGB値からパレットを構成するには、次のようにベクトルの値をコピーするだけです。
colors37 = c("#466791","#60bf37","#953ada","#4fbe6c","#ce49d3","#a7b43d","#5a51dc","#d49f36","#552095","#507f2d","#db37aa","#84b67c","#a06fda","#df462a","#5b83db","#c76c2d","#4f49a3","#82702d","#dd6bbb","#334c22","#d83979","#55baad","#dc4555","#62aad3","#8c3025","#417d61","#862977","#bba672","#403367","#da8a6d","#a79cd4","#71482c","#c689d0","#6b2940","#d593a7","#895c8b","#bd5975")
20の独特な色のリストを提供するWebサイトを見つけました: https://sashat.me/2017/01/11/list-of-20-simple-distinct-colors/
col_vector<-c('#e6194b', '#3cb44b', '#ffe119', '#4363d8', '#f58231', '#911eb4', '#46f0f0', '#f032e6', '#bcf60c', '#fabebe', '#008080', '#e6beff', '#9a6324', '#fffac8', '#800000', '#aaffc3', '#808000', '#ffd8b1', '#000075', '#808080', '#ffffff', '#000000')
試してみることができます!
次のような一連の色を生成できます。
myCol = c("pink1", "Violet", "mediumpurple1", "slateblue1", "purple", "purple3",
"turquoise2", "skyblue", "steelblue", "blue2", "navyblue",
"orange", "tomato", "coral2", "palevioletred", "violetred", "red2",
"springgreen2", "yellowgreen", "palegreen4",
"wheat2", "tan", "tan2", "tan3", "brown",
"grey70", "grey50", "grey30")
これらの色はできるだけ明確です。これらの類似した色については、グラデーションを形成するので、それらの違いを簡単に見分けることができます。