library(dplyr)
library(rvest)
library(rPlotter) # https://github.com/woobe/rPlotter
# library(pforeach) # https://github.com/hoxo-m/pforeach
library(gridExtra)
theme_set(theme_bw(base_size = 6, base_family = "Helvetica"))

匿名知的集団「ホクソエム」の誕生起源とされる日から1ヶ月が経ったようです。そこで1ヶ月記念として、更に「ホクソエム」を世に売り出していくため、ホクソエムのイメージカラーを検討してみました。

画像ファイルで使用されている色からRで利用できるパレットを作成するrPlotterを使い、ホクソエムを代表するイメージカラーを決めます。対象とするのはホクソエムメンバーのTwitterアイコンとしました。

準備

こちらで現在ホクソエムに含まれているメンバーを確認することができます。今回の対象はこちらのリストに登録されているホクソエム16名となります。

まずはTwitter IDをrvestによって取得し、つぎに各メンバーのアイコン画像をダウンロードしてきます。

screen.name <- html("https://twitter.com/teramonagi/lists/list/members") %>% 
  html_nodes(css = ".username") %>% 
  html_text() %>% 
  unique() %>% 
  grep(pattern = "^[[:punct:]][[:graph:]]", value = TRUE) %>% 
  substr(2, 100)
screen.name
##  [1] "_zashiki"   "aich_08_"   "yamano357"  "berobero11" "Prunus1350"
##  [6] "sanoche16"  "hoxo_m"     "motivic_"   "shima_x"    "piroyoung" 
## [11] "R_Linux"    "teramonagi" "tetsuroito" "u_ribo"     "dichika"   
## [16] "siero5335"

きちんと16名のIDが取得できているので、それぞれのアイコンをとってきます。なおアイコンは2015年4月22日21:34現在のものです。

for(i in 1:length(screen.name)){
  html(paste("https://twitter.com/", screen.name[i], sep = "")) %>% 
  html_nodes(css = ".ProfileAvatar-image") %>% 
  html_attr("src") %>% 
  download.file(destfile = paste("img_hxm/", screen.name[i], "_", basename(.), sep = ""), method = "curl")
}
# 親分へ。これをpfroeachでやるにはどうすればよいでしょうか... 
## 失敗例
# pforeach(i in 1:length(screen.name))({
#   html(paste("https://twitter.com/", screen.name[i], sep = "")) %>% 
#   html_nodes(css = ".ProfileAvatar-image") %>% 
#   html_attr("src") %>% 
#   download.file(destfile = paste("img_hxm/", basename(.), sep = ""), method = "curl")
# })

ファイル名が大きいとRが落ちてしまうので、適宜リサイズ。(Rでできなかった…)

画像内で多く使われている色の判別

それぞれのアイコンで使われているカラーコードを抽出します。

prof.file <- list.files(path = "img_hxm")
pal <- extract_colours(url_img = paste("img_hxm/", prof.file[15], sep = ""))
pal
## [1] "#161214" "#AE8A60" "#C7B5AC" "#E2B576" "#EEDECF"

14番目のホクソエムであるID u_ribo(自分)のアイコンで使用されているカラーコードが取得できました。

グラフにしてみます。

data.frame(name = rep(screen.name[15], each = 5), value = rep(20, 5), pal) %>% 
ggplot(., aes(x ="", y = value, fill = pal)) + 
  geom_bar(stat = "identity") + coord_polar("y") +
  scale_fill_manual(values = pal) + 
  guides(fill = FALSE)

もとの画像はこんな感じです。

この調子でほかのホクソエムもどうぞ。

どれが誰のアイコンかわかったら真のホクソエムになれる日も近いでしょう。

まとめ

本題のホクソエムテーマカラーですが、それぞれのカラーコードをまとめて、頻度を確認するとつぎのようになりました(たぶんあってるはず)。

## .
## #161214 #1A1415 #281918 #30201C #3D4A68 #3E261D #411C11 #432D22 #461D0F 
##       1       1       1       1       1       1       1       1       1 
## #462708 #4C1B0E #543B21 #563826 #593516 #5D221B #5F4436 #693525 #6A471F 
##       1       1       1       1       1       1       1       1       1 
## #705646 #705649 #754E3B #777049 #7B685D #7D4B34 #7F602A #815B40 #836D61 
##       1       1       1       1       1       1       1       1       1 
## #916A35 #927159 #945937 #966A3A #977961 #9D9579 #A09187 #A18550 #A2522C 
##       1       1       1       1       1       1       1       1       1 
## #A65830 #A8856D #A89283 #AA4642 #AA6C3D #AA9C90 #AC8271 #AE8040 #AE8A60 
##       1       1       1       1       1       1       1       1       1 
## #B16133 #B1835B #B58F79 #B5B5B9 #B99E8A #B9A698 #BA976B #BAA698 #BBB5AB 
##       1       1       1       1       1       1       1       1       1 
## #BEA275 #C4B09E #C7B5AC #C8C6C8 #C9996E #C9B182 #C9B9AE #CC996D #D0BDAA 
##       1       1       1       1       1       1       1       1       1 
## #D3C5B5 #D8BF9D #DDD7D1 #E2B575 #E5D0C4 #E6C09B #E8D7CB #E8E2DD #E9E0D8 
##       1       1       1       1       1       1       1       1       1 
## #ECDFD8 #EEDECF #EFE2C0 #EFE3D3 #F3D8C3 #F5E1CC #F9EDE0 #F9F8F4 
##       1       1       1       1       1       1       1       1

ホクソエムは個性あふれるカラフルな集団です

rPlotter、色の割合とか出してくれるとありがたい。

参考

Stay gold…