Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
可視化周辺の進化がヤヴァイ
2016
〜Plotlyを中⼼として〜
Tokyo.R#55
2016-07-30
@kashitan
> summary(kashitan)
• TwitterID : @kashitan
• お仕事 : 某通信会社
2
Rは可視化ツール
https://www.r-project.org
可視化に関する過去の発表
2013-06-01
第31回 R勉強会@東京
2010-06-26
第6回 R勉強会@東京
2015-02-21
第46回 R勉強会@東京
htmlwidgets多すぎ
主要ライブラリの⽐較
⼤分類 グラフ Plotly rbokeh highcharter
基本グラフ
折れ線グラフ ○ ○ ○
バブルチャート ○ × ?
散布図 ○ ○ ○
ヒートマップ ○ × ○
棒グラフ ○ × ○
⾯グラフ ○ × ○...
圧倒的⼈気
でも
アカウント登録が
必要でしょう?
オープンソース化
されました!
(アカウント不要)
※highcharts.jsは商⽤利⽤だと有償
•plotlyデモ
•plotlyによるグラフの作成
•plotlyグラフの調整
可視化のサンプルデータ
• 東京都知事選挙候補者の中3名のTweetデータ
⼩池 百合⼦
209,760
2,740
⿃越 俊太郎
159,788
541
増⽥寛也
6,476
265
(敬称略)
フォロワー数
ツイート数
可視化のサンプルデータ
• 東京都知事選挙候補者3名のTweetデータ
name id created favorite retweet
⼩池百合⼦ 759032551348457472 2016-07-29 23:27:17 184 152
...
•plotlyデモ
•plotlyによるグラフの作成
•plotlyグラフの調整
デモ
https://code-estrellita.net/tokyo_election_2016.html
•plotlyデモ
•plotlyによるグラフの作成
•plotlyグラフの調整
折れ線グラフ
df %>%
mutate(date=as.Date(created)) %>%
group_by(name, date) %>%
summarise(n=n()) %>%
plot_ly(x=date, y=n, color=n...
折れ線グラフ
バブルチャート
df %>%
mutate(date=as.Date(created)) %>%
group_by(name, date) %>%
summarise(n=n(), retweet=sum(retweetCount)) %>%
...
バブルチャート
散布図
df %>%
plot_ly(x=favoriteCount, y=retweetCount, color=name,
type="scatter", mode="markers")
type = “scatter”
mode = “m...
散布図
ヒートマップ
df %>%
filter(screenName == "ecoyuri") %>%
mutate(date=as.Date(created),
hour=hour(created)) %>%
group_by(date, hour...
ヒートマップ
棒グラフ(1/3)
df %>%
group_by(name) %>%
summarise(n=n()) %>%
plot_ly(x=name, y=n, type="bar")
type = “bar”を指定
棒グラフ(1/3)
棒グラフ(2/3)
df %>%
group_by(name) %>%
summarise(favorite=sum(favoriteCount),
retweet=sum(retweetCount)) %>%
plot_ly(x=name, ...
棒グラフ(2/3)
棒グラフ(3/3)
df %>%
group_by(name) %>%
summarise(favorite=sum(favoriteCount),
retweet=sum(retweetCount)) %>%
plot_ly(x=name, ...
棒グラフ(3/3)
⾯グラフ
df %>%
mutate(date=as.Date(created)) %>%
group_by(name, date) %>%
summarise(n=n()) %>%
plot_ly(x=date, y=n, fill="toze...
⾯グラフ
円グラフ(1/2)
df %>%
filter(screenName == "ecoyuri") %>%
summarise(favorite = sum(favoriteCount),
retweet = sum(retweetCount)) ...
円グラフ(1/2)
円グラフ(2/2)
df %>%
filter(screenName == "ecoyuri") %>%
summarise(favorite = sum(favoriteCount),
retweet = sum(retweetCount)) ...
円グラフ(2/2)
ヒストグラム
df %>%
mutate(date=as.Date(created)) %>%
group_by(name, date) %>%
summarise(n=n()) %>%
plot_ly(x=n, type="histogram...
ヒストグラム
箱ひげ図
df %>%
mutate(date=as.Date(created)) %>%
group_by(name, date) %>%
summarise(n=n()) %>%
plot_ly(x=n, type="box", color...
箱ひげ図
•plotlyデモ
•plotlyによるグラフの作成
•plotlyグラフの調整
グラフタイトル
df %>%
plot_ly(x=favoriteCount, y=retweetCount, color=name,
type="scatter", mode="markers") %>%
layout(title="corr...
グラフタイトル
x/y軸ラベル
df %>%
plot_ly(x=favoriteCount, y=retweetCount, color=name,
type="scatter", mode="markers") %>%
layout(title="corr...
x/y軸ラベル
凡例を消す
df %>%
plot_ly(x=favoriteCount, y=retweetCount, color=name,
type="scatter", mode="markers") %>%
layout(title="correl...
凡例を消す
凡例の位置を指定する
df %>%
plot_ly(x=favoriteCount, y=retweetCount, color=name,
type="scatter", mode="markers") %>%
layout(title="c...
凡例の位置を指定する
⾊を変える
df %>%
filter(screenName == "ecoyuri") %>%
mutate(date=as.Date(created),
hour=hour(created)) %>%
group_by(date, hour)...
⾊を変える
2軸グラフを作る
df %>%
filter(screenName == "ecoyuri") %>%
mutate(date = as.Date(created),
ratio = retweetCount/favoriteCount) %>%...
2軸グラフを作る
ggplotをインタラクティブに
library(ggplot2)
p <- df %>%
ggplot(aes(x = favoriteCount, y = retweetCount)) +
geom_point(aes(text = pas...
ggplotをインタラクティブに
その他のチャート
チートシート
https://images.plot.ly/plotly-documentation/images/r_cheat_sheet.pdf
まとめ
•plotlyデモ
•plotlyによるグラフの作成
•plotlyグラフの調整
おまけ
各候補者と単語の対応分析
各候補者と単語の共起ネットワーク
可視化周辺の進化がヤヴァイ 〜2016〜
Upcoming SlideShare
Loading in …5
×

可視化周辺の進化がヤヴァイ 〜2016〜

5,594 views

Published on

第55回 R勉強会@東京 発表資料

Published in: Data & Analytics

可視化周辺の進化がヤヴァイ 〜2016〜

  1. 1. 可視化周辺の進化がヤヴァイ 2016 〜Plotlyを中⼼として〜 Tokyo.R#55 2016-07-30 @kashitan
  2. 2. > summary(kashitan) • TwitterID : @kashitan • お仕事 : 某通信会社 2
  3. 3. Rは可視化ツール https://www.r-project.org
  4. 4. 可視化に関する過去の発表 2013-06-01 第31回 R勉強会@東京 2010-06-26 第6回 R勉強会@東京 2015-02-21 第46回 R勉強会@東京
  5. 5. htmlwidgets多すぎ
  6. 6. 主要ライブラリの⽐較 ⼤分類 グラフ Plotly rbokeh highcharter 基本グラフ 折れ線グラフ ○ ○ ○ バブルチャート ○ × ? 散布図 ○ ○ ○ ヒートマップ ○ × ○ 棒グラフ ○ × ○ ⾯グラフ ○ × ○ 円グラフ ○ × ○ 統計グラフ ヒストグラム ○ ○ ○ 箱ひげ図 ○ ○ ○
  7. 7. 圧倒的⼈気
  8. 8. でも アカウント登録が 必要でしょう?
  9. 9. オープンソース化 されました! (アカウント不要) ※highcharts.jsは商⽤利⽤だと有償
  10. 10. •plotlyデモ •plotlyによるグラフの作成 •plotlyグラフの調整
  11. 11. 可視化のサンプルデータ • 東京都知事選挙候補者の中3名のTweetデータ ⼩池 百合⼦ 209,760 2,740 ⿃越 俊太郎 159,788 541 増⽥寛也 6,476 265 (敬称略) フォロワー数 ツイート数
  12. 12. 可視化のサンプルデータ • 東京都知事選挙候補者3名のTweetデータ name id created favorite retweet ⼩池百合⼦ 759032551348457472 2016-07-29 23:27:17 184 152 ⼩池百合⼦ 759021573537878016 2016-07-29 22:43:39 177 178 ⼩池百合⼦ 759021527157252096 2016-07-29 22:43:28 155 171 ⼩池百合⼦ 759021455807873024 2016-07-29 22:43:11 144 163 ⼩池百合⼦ 759021109580750849 2016-07-29 22:41:49 153 163 ⼩池百合⼦ 759013802167848961 2016-07-29 22:12:46 209 194 ⼩池百合⼦ 759013745624440832 2016-07-29 22:12:33 211 191 ⼩池百合⼦ 759013630452965376 2016-07-29 22:12:05 225 196 ⼩池百合⼦ 758959413692538881 2016-07-29 18:36:39 318 208
  13. 13. •plotlyデモ •plotlyによるグラフの作成 •plotlyグラフの調整
  14. 14. デモ https://code-estrellita.net/tokyo_election_2016.html
  15. 15. •plotlyデモ •plotlyによるグラフの作成 •plotlyグラフの調整
  16. 16. 折れ線グラフ df %>% mutate(date=as.Date(created)) %>% group_by(name, date) %>% summarise(n=n()) %>% plot_ly(x=date, y=n, color=name, type="scatter", mode="lines") type = “scatter” mode = “lines”を指定
  17. 17. 折れ線グラフ
  18. 18. バブルチャート df %>% mutate(date=as.Date(created)) %>% group_by(name, date) %>% summarise(n=n(), retweet=sum(retweetCount)) %>% plot_ly(x=date, y=n, color=name, type="scatter", mode="markers", size=retweet) type = “scatter” mode = “markers” sizeを指定
  19. 19. バブルチャート
  20. 20. 散布図 df %>% plot_ly(x=favoriteCount, y=retweetCount, color=name, type="scatter", mode="markers") type = “scatter” mode = “markers”を指定
  21. 21. 散布図
  22. 22. ヒートマップ df %>% filter(screenName == "ecoyuri") %>% mutate(date=as.Date(created), hour=hour(created)) %>% group_by(date, hour) %>% summarise(n=n()) %>% plot_ly(x=hour, y=date, z=n, type="heatmap") type = “heatmap”を指定
  23. 23. ヒートマップ
  24. 24. 棒グラフ(1/3) df %>% group_by(name) %>% summarise(n=n()) %>% plot_ly(x=name, y=n, type="bar") type = “bar”を指定
  25. 25. 棒グラフ(1/3)
  26. 26. 棒グラフ(2/3) df %>% group_by(name) %>% summarise(favorite=sum(favoriteCount), retweet=sum(retweetCount)) %>% plot_ly(x=name, y=favorite, type="bar", name="favorite") %>% add_trace(x=name, y=retweet, type="bar", name="retweet") add_trace()で系列を追加
  27. 27. 棒グラフ(2/3)
  28. 28. 棒グラフ(3/3) df %>% group_by(name) %>% summarise(favorite=sum(favoriteCount), retweet=sum(retweetCount)) %>% plot_ly(x=name, y=favorite, type="bar", name="favorite") %>% add_trace(x=name, y=retweet, type="bar", name="retweet") %>% layout(barmode="stack") barmode=“stack”で 積み上げ棒グラフ
  29. 29. 棒グラフ(3/3)
  30. 30. ⾯グラフ df %>% mutate(date=as.Date(created)) %>% group_by(name, date) %>% summarise(n=n()) %>% plot_ly(x=date, y=n, fill="tozeroy", color=name) fill=“tozeroy”を指定
  31. 31. ⾯グラフ
  32. 32. 円グラフ(1/2) df %>% filter(screenName == "ecoyuri") %>% summarise(favorite = sum(favoriteCount), retweet = sum(retweetCount)) %>% plot_ly(labels=colnames(.), values=c(favorite, retweet), type="pie") labels, values, type=“pie”を指定
  33. 33. 円グラフ(1/2)
  34. 34. 円グラフ(2/2) df %>% filter(screenName == "ecoyuri") %>% summarise(favorite = sum(favoriteCount), retweet = sum(retweetCount)) %>% plot_ly(labels=colnames(.), values=c(favorite, retweet), type="pie", hole = 0.6) holeを指定するとドーナツグラフ
  35. 35. 円グラフ(2/2)
  36. 36. ヒストグラム df %>% mutate(date=as.Date(created)) %>% group_by(name, date) %>% summarise(n=n()) %>% plot_ly(x=n, type="histogram", color=name) type=“histogram”を指定
  37. 37. ヒストグラム
  38. 38. 箱ひげ図 df %>% mutate(date=as.Date(created)) %>% group_by(name, date) %>% summarise(n=n()) %>% plot_ly(x=n, type="box", color=name) type=“box”を指定
  39. 39. 箱ひげ図
  40. 40. •plotlyデモ •plotlyによるグラフの作成 •plotlyグラフの調整
  41. 41. グラフタイトル df %>% plot_ly(x=favoriteCount, y=retweetCount, color=name, type="scatter", mode="markers") %>% layout(title="correlation of favorite and retweet") layout()内で指定
  42. 42. グラフタイトル
  43. 43. x/y軸ラベル df %>% plot_ly(x=favoriteCount, y=retweetCount, color=name, type="scatter", mode="markers") %>% layout(title="correlation of favorite and retweet", xaxis=list(title="favorite"), yaxis=list(title="retweet")) xaxis=list(title=“”), yaxis=list(title=“”)で指定
  44. 44. x/y軸ラベル
  45. 45. 凡例を消す df %>% plot_ly(x=favoriteCount, y=retweetCount, color=name, type="scatter", mode="markers") %>% layout(title="correlation of favorite and retweet", xaxis=list(title="favorite"), yaxis=list(title="retweet"), showlegend=FALSE) showlegend=FALSEで凡例なし
  46. 46. 凡例を消す
  47. 47. 凡例の位置を指定する df %>% plot_ly(x=favoriteCount, y=retweetCount, color=name, type="scatter", mode="markers") %>% layout(title="correlation of favorite and retweet", xaxis=list(title="favorite"), yaxis=list(title="retweet"), legend=list(x=0.1, y=0.7)) legend=list(x=, y=)で 位置を指定(0から1の範囲)
  48. 48. 凡例の位置を指定する
  49. 49. ⾊を変える df %>% filter(screenName == "ecoyuri") %>% mutate(date=as.Date(created), hour=hour(created)) %>% group_by(date, hour) %>% summarise(n=n()) %>% plot_ly(x=hour, y=date, z=n, type="heatmap", colors="Spectral") colorsでRColorBrewerの カラーパレット名を指定する
  50. 50. ⾊を変える
  51. 51. 2軸グラフを作る df %>% filter(screenName == "ecoyuri") %>% mutate(date = as.Date(created), ratio = retweetCount/favoriteCount) %>% group_by(name, date) %>% summarise(n=n(), ratio=mean(ratio)) %>% plot_ly(x=date, y=n, type="bar", name="n") %>% add_trace(x=date, y=ratio, name="ratio", yaxis="y2") %>% layout(yaxis2=list(overlaying="y",side="right")) yaxis2=list(overlaying="y",side="right ")を指定する
  52. 52. 2軸グラフを作る
  53. 53. ggplotをインタラクティブに library(ggplot2) p <- df %>% ggplot(aes(x = favoriteCount, y = retweetCount)) + geom_point(aes(text = paste("Name:", name)), size = 4) + geom_smooth(aes(colour = name, fill = name)) + facet_wrap(~ name) ggplotly(p) ggplotly()でラップするだけ
  54. 54. ggplotをインタラクティブに
  55. 55. その他のチャート
  56. 56. チートシート https://images.plot.ly/plotly-documentation/images/r_cheat_sheet.pdf
  57. 57. まとめ
  58. 58. •plotlyデモ •plotlyによるグラフの作成 •plotlyグラフの調整
  59. 59. おまけ
  60. 60. 各候補者と単語の対応分析
  61. 61. 各候補者と単語の共起ネットワーク

×