12

、、Rなどのいくつかのカラー パレットが自動的にロードされることはわかっています。も承知しております。しかし、カスタム カラー パレットを使用して名前で色を割り当てたい場合はどうすればよいでしょうか。それは可能ですか? paletterainbowheat.colorsgrayRColorBrewer

私の会社のカラーパレットは次のとおりです。

#1A73BA (R: 26 G: 115 B: 186) - this is a blue
#FFDB43 (R:255 G:219 B:67) - this is a yellow
#B54B05 (R:181 G:75 B:5) - this is an orange

私の会社のイニシャルはATです。

これらの色を覚えていないため、HEX や RGB ではなく名前で呼び出すことができるようにしたいと考えています。理想的には、これらの色を開始する R に自動的に読み込まれるファイルを作成できます。

ATBlue <- #1A73BA
ATYellow <- #FFDB43
ATOrange <- #B54B05

次に、色を呼び出すことができます。

plot(x,y, col = "ATBlue")

値をデータフレームに入れて、次のように呼び出すことができます。

ATColors <- data.frame(name = c("ATBlue", "ATYellow", "ATOrange"), color= c("#1A73BA", "#F7D364", "#B54B05"))

plot(x,y, col = ATColors[3,2])

しかし、正しく呼び出すには、データフレーム内の場所を知る必要があります。

R の起動時に自動的に読み込まれる要素を作成して、カスタム カラー名をプロットに呼び出すことはできますか?

4

3 に答える 3

14

これはあなたのコメントと編集に答えます(または少なくとも1つの可能な答えです):

ATblue <- rgb(26/255, 115/255, 186/255, 1)
 ATyellow <- rgb(255/255, 219/255, 67/255, 1)
 ATorange <- rgb(181/255, 75/255, 5/255, 1)

 plot(1:10, col= c(ATblue, ATyellow, ATorange), pch=20)

rgb を使用した定義方法では、アルファ レベルを設定できるため、それをサポートするグラフィック デバイス (少なくとも 'pdf'、'windows'、'quartz' および 'X11') で透明度を設定できます。

「パレットベクター」に名前を付けることもできます

palvec <-  c(ATblue=ATblue, ATyellow=ATyellow, ATorange=ATorange)

そのベクトルには、数字または名前のいずれかでアクセスできます。

plot(1,1) # to set up plot window
abline(h=c(0.8,1,1.2), col= palvec[ c( 'ATblue', 'ATyellow', 'ATorange' ) ] , lwd=40)

一般に、すべて小文字を使用すると、基本パッケージとグラフィック パッケージ (デフォルトでロードされるため、名前を変更する必要はありません) と gif-list が適切に対応することがわかると思います。つまり、すでに R の一部です。「LavenderBlush」の R の色の名前を見つけたいとしましょう。割り当てられた色名のベクトルは colors() から返されますが、かなり大きいので、次のようにして減らすことができます:

grep("lavender", colors(), ignore.case=TRUE, value=TRUE)
#[1] "lavender"       "lavenderblush"  "lavenderblush1" "lavenderblush2" 
#     "lavenderblush3" "lavenderblush4"

そして、その色の 16 進コードが、判読できない gif テーブルのものと同じかどうかを確認したいとします。

 ccodes <- as.hexmode( c(256^(2:0) %*% col2rgb("lavenderblush")) )
 ccodes
 #[1] "fff0f5"

うん。そして、あなたの例では、「海の緑」を使用してください:

> ccodes <- as.hexmode( c(256^(2:0) %*% col2rgb("seagreen")) )
> ccodes
[1] "2e8b57

16 進コードの値がある場合は、次のように「#」を追加できますpaste0

 paste0("#", ccodes)
#[1] "#2e8b57"
 plot(1,1, col=paste0("#", ccodes) )

そのような値のベクトルがある場合、paste0もベクトル化されます。

 ccodes <- as.hexmode( c(256^(2:0) %*% col2rgb(colors()[20:25])) )
 paste0("#", ccodes)
#[1] "#ffe4c4" "#eed5b7" "#cdb79e" "#8b7d6b" "#000000" "#ffebcd"
于 2012-08-11T02:58:58.197 に答える
2

次のように、色を名前付きベクターに入れます。

ATcols <- c(blue = "#1A73BA", yellow = "#FFDB43", orange = "#B54B05")

次に、次のように青を取得できますATcols["blue"]

少し凝りたい場合は、名前付きベクターと関数を作成できます。

AT_color_data <- c(blue = "#1A73BA", yellow = "#FFDB43", orange = "#B54B05")
ATcolor <- function(color="blue") {
         if (is.numeric(color)) AT_color_data[color]
         else AT_color_data[tolower(color)]
}

これにより、色を取得するためのいくつかのオプションが提供されます。

ATcolor(2:3)
#    yellow    orange 
# "#FFDB43" "#B54B05"

ATcolor("orange")
#    orange 
# "#B54B05" 

ATcolor(c("orange", "blue"))
#    orange      blue 
# "#B54B05" "#1A73BA" 

rainbowまたは、数値引数を指定するときのように関数を動作させることもできます。

AT_color_data <- c(blue = "#1A73BA", yellow = "#FFDB43", orange = "#B54B05")
ATcolor <- function(color="blue") {
         if (is.numeric(color)) AT_color_data[1:color[1]]
         else AT_color_data[tolower(color)]
}

たとえば、次のようになります。

ATcolor(2)
#      blue    yellow 
# "#1A73BA" "#FFDB43"
于 2012-08-11T21:34:00.690 に答える
-2
library("grDevices")
plot(1:20,pch=20,col=col)
col=colorRampPalette(c("white", "red"))(20) 
M <- matrix(runif(100),10,10)
M[lower.tri(M)] <- NA
image(M,col = col,frame=F,xaxt="n",yaxt="n")
于 2015-08-13T17:45:34.750 に答える