【plotly,ggplot2】チョコレート狂と肥満のイケナイ関係をグリグリ動くplotにしてサイトに埋め込みたい
11月です。
キャンプをしに海を越えてやって来た友人が、
「いや、まだ死にたくない」
との言葉を残してホテルを取ったくらいには、冬です。
試される大地が結構本気を出してきているので、
近々北海道に出張のご予定がある方は防寒に気を付けてください。
「インタラクティブな可視化」とは
グリグリ動く図、いわゆる「インタラクティブな図」というものを
見たり耳にしたりはしていたんですが、
見せる相手も居なければ
埋め込むの難しそうだし。。。
なんとなくあまり触らずにいました。
{leaflet}でラブホデータ動かしておおお、って思ったくらい。
しかしながら。
最近
TokyoRで@teramonagiさんが{dygraph}で時系列グラフをグリグリ動かしたり、
@dichikaさんが{leaflet}で巡回経路をグリグリ動かしたり、
id:yutannihilationさんが{leaflet}でチョコ狂地図をグリグリ動かしたり、
しているのを見て
かっこいい!!!
やっぱ動くのかっこいいよ!!!!!
という
ガンダムを見た子供のような気持ちになったので、
勇気を出して動かしてみようと思います。
今回のテーマ
・{plotly}を使ってみよう
・{plotly}と{ggplot2}の表記の違いとか表示の違いとかを見てみる
Plotlyなるデータをオンライン経由でplot出来るサービスがあります。
特徴は作成した図を別なWEBとかに埋め込めること。と
ggplot2を使えること!!!!
そのPlotlyをRから使えるぜ、というのが{plotly}です。
以上です。
初めて使うから
今回はもう...動かしてみられれば...いいかな...
志は低めに...
まずアカウント登録と導入
①https://plot.ly/にアクセス
②アカウントを作成
③API SettingsからAPI Keyを取得。
あとはgithubから{plotly}を手に入れて
アカウントとAPIKeyを入力します。
>library(devtools) >devtools::install_github("ropensci/plotly") #なんかplotly()は廃止されたからplot_ly使えって怒られた >plotly::plot_ly(username = "ID", key = "API Key")
plotly()はplot_ly()になったみたい。
warningが出ます。
データ
データを集める元気がなかったので前回のを引きずり出して使います。wafdata.hatenablog.com
各都道府県のチョコレート消費額と各都道府県の肥満率をくっつけたやつです。
あれこれありますが
今回使う変数はこのへん。
Expenditure:::各都道府県のチョコレート類全般の消費額
class_a :::チョコレート全般の消費額を離散化して1~3のグループにしたもの
himan :::各都道府県の肥満率
class_himan:::肥満率を離散化して1~3のグループにしたもの
> himan_map ID areaname chiho area Expenditure1 Expenditure2 Expenditure class_1 class_2 class_a himan class_himan 1 1 北海道 hokkaido 札幌市 5478 1976 7454 2 3 3 0.385 3 2 2 青森県 tohoku 青森市 3471 1125 4596 1 1 1 0.380 3 3 3 岩手県 tohoku 盛岡市 4317 1359 5676 1 2 1 0.387 3 4 4 宮城県 tohoku 仙台市 5064 1499 6563 2 2 2 0.395 3 5 5 秋田県 tohoku 秋田市 4639 1214 5853 2 1 1 0.312 2 6 6 山形県 tohoku 山形市 5697 1721 7418 3 3 3 0.293 1 7 7 福島県 tohoku 福島市 4922 1373 6295 2 2 2 0.403 3 8 8 茨城県 kantou 水戸市 4807 1222 6029 2 1 2 0.312 2 9 9 栃木県 kantou 宇都宮市 5797 1713 7510 3 3 3 0.405 3 10 10 群馬県 kantou 前橋市 4839 1152 5991 2 1 2 0.296 1 11 11 埼玉県 kantou さいたま市 5239 1185 6424 2 1 2 0.310 2 12 12 千葉県 kantou 千葉市 4634 1196 5830 2 1 1 0.317 2 13 13 東京都 kantou 東京都区部 5248 1123 6371 2 1 2 0.305 2 14 14 神奈川県 kantou 横浜市 4729 1165 5894 2 1 2 0.303 2 15 15 新潟県 tyubu 新潟市 4801 1162 5963 2 1 2 0.277 1 16 16 富山県 tyubu 富山市 5634 1683 7317 3 3 3 0.296 1 17 17 石川県 tyubu 金沢市 6543 1906 8449 3 3 3 0.284 1 18 18 福井県 tyubu 福井市 5235 1612 6847 2 2 2 0.225 1 19 19 山梨県 tyubu 甲府市 5057 1343 6400 2 2 2 0.272 1 20 20 長野県 tyubu 長野市 5251 1474 6725 2 2 2 0.257 1 21 21 岐阜県 tyubu 岐阜市 4805 1229 6034 2 1 2 0.292 1 22 22 静岡県 tyubu 静岡市 4733 1156 5889 2 1 2 0.252 1 23 23 愛知県 tyubu 名古屋市 5091 1148 6239 2 1 2 0.294 1 24 24 三重県 kansai 津市 4987 1355 6342 2 2 2 0.292 1 25 25 滋賀県 kansai 大津市 4652 1395 6047 2 2 2 0.230 1 26 26 京都府 kansai 京都市 5455 1188 6643 2 1 2 0.256 1 27 27 大阪府 kansai 大阪市 4096 943 5039 1 1 1 0.314 2 28 28 兵庫県 kansai 神戸市 4880 1182 6062 2 1 2 0.277 1 29 29 奈良県 kansai 奈良市 5620 1555 7175 3 2 3 0.326 2 30 30 和歌山県 kansai 和歌山市 4501 1100 5601 2 1 1 0.315 2 31 31 鳥取県 tyugoku 鳥取市 5381 1757 7138 2 3 2 0.251 1 32 32 島根県 tyugoku 松江市 4539 1580 6119 2 2 2 0.278 1 33 33 岡山県 tyugoku 岡山市 4619 1466 6085 2 2 2 0.275 1 34 34 広島県 tyugoku 広島市 5313 1308 6621 2 2 2 0.294 1 35 35 山口県 tyugoku 山口市 5853 1950 7803 3 3 3 0.221 1 36 36 徳島県 shikoku 徳島市 4477 1558 6035 1 2 2 0.401 3 37 37 香川県 shikoku 高松市 5479 1344 6823 2 2 2 0.254 1 38 38 愛媛県 shikoku 松山市 5039 1668 6707 2 3 2 0.330 2 39 39 高知県 shikoku 高知市 5428 1933 7361 2 3 3 0.376 3 40 40 福岡県 kyusyu 福岡市 4232 1035 5267 1 1 1 0.298 2 41 41 佐賀県 kyusyu 佐賀市 4703 1537 6240 2 2 2 0.313 2 42 42 長崎県 kyusyu 長崎市 4076 974 5050 1 1 1 0.365 2 43 43 熊本県 kyusyu 熊本市 4576 1081 5657 2 1 1 0.337 2 44 44 大分県 kyusyu 大分市 5377 1557 6934 2 2 2 0.373 2 45 45 宮崎県 kyusyu 宮崎市 4536 1248 5784 2 1 1 0.447 3 46 46 鹿児島県 kyusyu 鹿児島市 5237 1630 6867 2 2 2 0.335 2 47 47 沖縄県 okinawa 那覇市 4174 1035 5209 1 1 1 0.452 3
バブルチャート
まずは{plotly}をとりあえず描いてみるべく
チョコレート消費額と肥満率の関係をバブルチャートにしてみた。
>plot_ly(himan_map, x = Expenditure, y = himan, text = paste("area: ", areaname), mode = "markers", color = class_himan, size = himan, filename="r-docs/himan-bubble-text")
実行して
success!!
ってなったらブラウザが立ち上がって図を表示してくれます。
でもって
表示された図の右下「<>」を押すとサイト埋め込み用のコードが表示されるので
埋め込んでみたりなんかして。
埋め込めた。。。
ggplot2からplotlyへの連携
とりあえず描いてはみたけど、
plot_ly()の文法に慣れないのでggplot2の描き方で描いてみたい。
もはやggplot2を動かしたい。
ggplot2のオブジェクト"p"とかを ggplotly(p) するといけるらしい。
p <- ggplot(himan_map, aes(x = Expenditure, y = himan)) + geom_point(aes(text = paste("area:", areaname)),colour= himan_map$class_himan, size = 4) + geom_smooth(method="lm",se=TRUE) (pp <- ggplotly(p))ggplot2が動いてる!!!!!
見た目と表記の比較
同じデータで同じ箱ひげ図をplot_ly()とggplotly()で描いてみました。
絶妙に違う....。
#ggplot2で箱ひげ図 g <- ggplot(himan_map, aes(x = class_a, y = himan)) + geom_boxplot(aes(fill = class_a)) (gg <- ggplotly(g))
#plot_lyで箱ひげ図 plot_ly(himan_map, y = himan, color = class_a, type = "box")
こんな感じです。
サンプルレベルで恐縮ですがご査収ください。
コロプレス図も描けるっぽいから描きたかったけど修行が足りなかった...
あとでゆっくりやります。
日本って"jpn"指定でいけるのかなあ
おわりに
作った図を見てると、
チョコ消費額と肥満率に相関が把握できなそうなのはまあいいとして、
大事なのは
少なからず正の相関では...なさげ...!
外れ値レベルでチョコを食べてる石川県でさえ肥満クラスはS。
希望を持って生きよう。
チョコレートの季節だ。