はじめに
地上波で生中継するM-1グランプリはリアルタイムの世間の反応を拾うことが可能です。
実際、当番組では以下画像のように適宜話題ワードランキングが映し出されてました。
実は私もこれとは独立して過去同じようなことを実装したことがあり、今年のM-1グランプリについても話題ワード可視化をGIFで作成しました。
本記事では上記画像を作成するR言語のスクリプトを紹介します。
R言語のスクリプト
以下がR言語のコードです。
library(openssl) library(animation) tweet_mat <- matrix(scan("C:/.../test.csv",what=character(),sep=","),nrow=M) par(family="HiraKakuProN-W3") printHotWord <- function(){ for (i in 1:N) { plot(-10,10,xlab="",ylab="",xlim=c(-2.4,2.4),ylim=c(-1.2,1.2),main=tweet_mat[1,i]) for (j in 2:11) { tweet_x <- 2-4*as.integer(substr(gsub("[a-z]","",md5(tweet_mat[j,i])),0,5))/100000 tweet_y <- 1-2*as.integer(substr(paste(rev(strsplit(gsub("[a-z]","",md5(tweet_mat[j,i])),NULL)[[1]]),collapse=""),0,5))/100000 tweet_col <- as.integer(substr(gsub("[a-z]","",md5(tweet_mat[j,i])),0,5))%%8 + 1 text(x=tweet_x,y=tweet_y,labels=tweet_mat[j,i],cex=(10-j)/3+1,col=tweet_col) } } }
このスクリプトを以下のように実行すればanimation.gifというGIFデータができます。
> source("C:/.../test.r")
補足
上記のミソはテキストを出す座標をどのように決定するかです。
そこの技術は以下記事にて解説しています。
あとはアニメーション化をします。
元データは以下のような形式とし、一列目で時刻をグラフのタイトルにしています。
20:55,かまいたち,和牛,上沼,すえひろがり,上沼恵美子,見取り図,からし蓮根,上戸彩,ニューヨーク,同じネタ 21:00,和牛,かまいたち,ミルクボーイ,コーンフレーク,上沼,すえひろがり,上沼恵美子,見取り図,からし蓮根,上戸彩 21:05,ミルクボーイ,コーンフレーク,和牛,かまいたち,上沼,すえひろがり,上沼恵美子,見取り図,からし蓮根,上戸彩
文字の大きさは順位に依存する値が格納されているjを用いて設定しています。
cex=(10-j)/3+1
終わりに
M1グランプリにて登場した話題ワードランキングの可視化手法の再現方法でした。
ご参考になれば幸いです。