次元の海で溺れる

Rとデータ解析と統計手法たちとわたし

【plotly,ggplot2】チョコレート狂と肥満のイケナイ関係をグリグリ動くplotにしてサイトに埋め込みたい

11月です。


キャンプをしに海を越えてやって来た友人が、

「いや、まだ死にたくない」

との言葉を残してホテルを取ったくらいには、冬です。

試される大地が結構本気を出してきているので、
近々北海道に出張のご予定がある方は防寒に気を付けてください。

インタラクティブな可視化」とは

グリグリ動く図、いわゆる「インタラクティブな図」というものを
見たり耳にしたりはしていたんですが、

見せる相手も居なければ
埋め込むの難しそうだし。。。

なんとなくあまり触らずにいました。
{leaflet}でラブホデータ動かしておおお、って思ったくらい。

しかしながら。

最近

TokyoRで@teramonagiさんが{dygraph}で時系列グラフをグリグリ動かしたり、
@dichikaさんが{leaflet}で巡回経路をグリグリ動かしたり、
id:yutannihilationさんが{leaflet}でチョコ狂地図をグリグリ動かしたり、

notchained.hatenablog.com

しているのを見て

かっこいい!!!
やっぱ動くのかっこいいよ!!!!!

という
ガンダムを見た子供のような気持ちになったので、
勇気を出して動かしてみようと思います。

今回のテーマ

・{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!!
ってなったらブラウザが立ち上がって図を表示してくれます。

でもって

表示された図の右下「<>」を押すとサイト埋め込み用のコードが表示されるので
埋め込んでみたりなんかして。


himan vs Expenditure

おおお
埋め込めた。。。

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))


himan vs Expenditure

ggplot2が動いてる!!!!!

見た目と表記の比較

同じデータで同じ箱ひげ図をplot_ly()とggplotly()で描いてみました。
絶妙に違う....。

#ggplot2で箱ひげ図
g <- ggplot(himan_map, aes(x = class_a, y = himan)) +
  geom_boxplot(aes(fill = class_a))

(gg <- ggplotly(g))


himan vs class_a

#plot_lyで箱ひげ図
plot_ly(himan_map, y = himan, color = class_a, type = "box")


3, 2, 1

こんな感じです。
サンプルレベルで恐縮ですがご査収ください。

コロプレス図も描けるっぽいから描きたかったけど修行が足りなかった...
あとでゆっくりやります。

日本って"jpn"指定でいけるのかなあ

おわりに

作った図を見てると、

チョコ消費額と肥満率に相関が把握できなそうなのはまあいいとして、

大事なのは

少なからず正の相関では...なさげ...!

外れ値レベルでチョコを食べてる石川県でさえ肥満クラスはS。

希望を持って生きよう。
チョコレートの季節だ。