〇はじめに
この記事の内容を書き直した↓の記事を参照してください。
tidyverseに対応した内容になっています。
Rでカラーコードを指定する時用に作りました。単にカラーコード一覧として使ってもいいのですが、メンバーカラーを指定したら対応表からカラーコードを返す用のスクリプトも書きました。
メンバーカラー相当のカラーコードはWikipediaを参考にしました。(現在追加中ベリキュー辺りまではまとめる予定です。)
〇Rで使える色コード表
・メンバーカラー,カラーコード変換
まずは対応表を読み込む。(csvファイル作成用の対応表は下に掲載しています。)
correspondence_table <- read.csv("hellocolors.csv", stringsAsFactors = FALSE) #Factor型にならず文字列型にするため correspondence_table #直接書き込むならこちら member_color <- c("hotpink","kimidori","honey","royalblue","emeraldgreen","orange","lavender","seablule","purple","lightpink","lightporange","italianred","goldyellow","shiro","red","lightpink","blue","orange","lightblue","yellow","aquablue","hotpink","lightgreen","lightpurple","peach","ringo","lemon","grape","melon","mediumblue","orange","hotpink","pink","lime","italianred","orange","mediumblue","purple","yellow","turquoiseblue","royalblue","pink","green","purple","lightgreen","lightorange","lightblue","lightpurple","yellow","lightpink","emeraldgreen","peach","lightred") web_color <- c("","GreenYellow","","","","Orange","Plum","","Purple","","","","","","","","","Orange","","Gold","Aquamarine","hotpink","","Plum","Pink","Red","Yellow","Violet","Chartreuse","","Orange","","","","","","","","","","","","","","","","","","","","","","") color_code <- c("#E5007F","#ADFF2F","#FFF33F","#0233CB","#00B379","#FFA500","#DDA0DD","#56BED9","#800080","#F1D1D4","#F5B48C","#F31C3B","#FFDF00","#FFFFFF","#FF0000","#FF80FF","#0F2D9E","#FFA500","#007EC7","#FFD700","#7FFFD4","#FF69B4","#ACDD4D","#DDA0DD","#FFC0CB","#FF0000","#FFFF00","#EE82EE","#7FFF00","#0000CD","#FFA500","#E5007F","#FF99FF","#ACDD5D","#FF3333","#FF9902","#3366FF","#9966FF","#FFFF33","#02DCFF","#0402FD","#FC72EB","#099800","#6400B2","#BDF53A","#FD9556","#90F2FB","#E0ADFC","#FDEB3F","#FEC1BE","#1BC6AE","#FEB4F8","#FF6361") correspondence_table <- data.frame(member_color = member_color, web_color = web_color, color_code = color_code, stringsAsFactors = FALSE) correspondence_table
自分が欲しい色を指定する。(正確に!"honey"だったり"shiro","ringo"だったりするよ)
color1 <- c("honey", "royalblue", "emeraldgreen", "orange") #欲しいメンバーカラーを指定してね
対応表から検索して、Rで使える色コード返す。(R以外でももちろん使えます。)
tmp <- match(color1, correspondence_table$member_color) #対応表から行番号を検索 color2 <- correspondence_table$color_code[tmp] #検索した行番号からカラーコードを抽出 color2
返ってきた色を試しに見てみる。
barplot(rep(1, length(color2)), names = color2, col = color2)
以上です!
- 試行錯誤の副産物1
tmp0 <- "" for(i in 1:length(color1)){ tmp1 <- subset(correspondence_table, member_color == color1[i], select = color_code) #subset()だと検索列と抽出列を別で選べて、完全一致&重複&データフレーム形式で返すよ tmp2 <- tmp1[1, 1] #なのでtmp1[1,1]で指定するよ tmp0 <- c(tmp0, tmp2) } color2 <- tmp0[-1]
- 試行錯誤の副産物2
tmp0 <- "" for(i in 1:length(color1)){ tmp1 <- grep(color1[i], correspondence_table$member_color) #grep()だと部分一致&重複で返すよ tmp2 <- correspondence_table$color_code[tmp1[1]] #なので一応tmp1[1]で指定してるけど、1つ目が部分一致だったらダメ tmp0 <- c(tmp0, tmp2) } color2 <- tmp0[-1]
〇おわりに
Excelではよくindex(match(),match())を使ってこういうことをしてたのでRでもやってみたくなったのですが、かなりの時間を取られてしまいました。そんなに難しい事してないのになぁ。使ったことのあったgrep(),subset()でもうまくいかず、match()に辿り着いた時の気持ちといったら、、、うまくいかなかったのはFactor型になってたからなのですけどね。一番時間を取られたのが、Excelでのテーブルのように行列名を検索して両方マッチする値を返そうと調べてたら、行名という言葉自体中々見つからなかったことですね。Rって行名を操作に使わないのかな??結果1列目で検索して3列目の同じ行の値を返すとなった訳ですが、段々そちらの方が素直な気もしてきました。Factorの件は、各関数を使う時に気を付けるべき点を記憶に残すのもそうですが、何か変な時に怪しいところを探す嗅覚を鍛えたいものです。経験ですね。
対応表については、色自体の微調整をしたいのですが何を参考にしたものか悩んでいます。あとは名前で検索できるようにしたいですね。
最後まで読んでいただきありがとうございました!またよろしくお願いします。
・対応表
member_color | web_color | color_code |
---|---|---|
hotpink | #E5007F | |
kimidori | GreenYellow | #ADFF2F |
honey | #FFF33F | |
royalblue | #0233CB | |
emeraldgreen | #00B379 | |
orange | Orange | #FFA500 |
lavender | Plum | #DDA0DD |
seablule | #56BED9 | |
purple | Purple | #800080 |
lightpink | #F1D1D4 | |
lightporange | #F5B48C | |
italianred | #F31C3B | |
goldyellow | #FFDF00 | |
shiro | #FFFFFF | |
red | #FF0000 | |
lightpink | #FF80FF | |
blue | #0F2D9E | |
orange | Orange | #FFA500 |
lightblue | #007EC7 | |
yellow | Gold | #FFD700 |
aquablue | Aquamarine | #7FFFD4 |
hotpink | hotpink | #FF69B4 |
lightgreen | #ACDD4D | |
lightpurple | Plum | #DDA0DD |
peach | Pink | #FFC0CB |
ringo | Red | #FF0000 |
lemon | Yellow | #FFFF00 |
grape | Violet | #EE82EE |
melon | Chartreuse | #7FFF00 |
mediumblue | #0000CD | |
orange | Orange | #FFA500 |
hotpink | #E5007F | |
pink | #FF99FF | |
lime | #ACDD5D | |
italianred | #FF3333 | |
orange | #FF9902 | |
mediumblue | #3366FF | |
purple | #9966FF | |
yellow | #FFFF33 | |
turquoiseblue | #02DCFF | |
royalblue | #0402FD | |
pink | #FC72EB | |
green | #099800 | |
purple | #6400B2 | |
lightgreen | #BDF53A | |
lightorange | #FD9556 | |
lightblue | #90F2FB | |
lightpurple | #E0ADFC | |
yellow | #FDEB3F | |
lightpink | #FEC1BE | |
emeraldgreen | #1BC6AE | |
peach | #FEB4F8 | |
lightred | #FF6361 |
(編集用メモ)="|"&A1&"|"&B1&"|"&C1&"|"