knitr::include_graphics("img/twitch.png")
Twitch is an American video live streaming service that focuses on video game live streaming, including broadcasts of esports competitions, in addition to offering music broadcasts, creative content, and “in real life” streams. It is operated by Twitch Interactive, a subsidiary of Amazon.com, Inc. It was introduced in June 2011 as a spin-off of the general-interest streaming platform Justin.tv. Content on the site can be viewed either live or via video on demand.
The popularity of Twitch eclipsed that of its general-interest counterpart. In October 2013, the website had 45 million unique viewers, and by February 2014, it was considered the fourth largest source of peak Internet traffic in the United States. In August 2014, Twitch was acquired by Amazon for US $970 million, which later led to the introduction of synergies with the company’s subscription service Amazon Prime.
By 2015, Twitch had more than 100 million viewers per month. In 2017, Twitch remained the leading live streaming video service for video games in the US. As of February 2020, it had 3 million broadcasters monthly and 15 million daily active users, with 1.4 million average concurrent users. As of May 2018, Twitch had over 27,000 partner channels.
#read the dataset
twitch <- read.csv(file="twitch/Twitch_global_data.csv")
#twitch$Hours_watched is numeric, as integer max value is 2147483647
str(twitch)
## 'data.frame': 71 obs. of 8 variables:
## $ year : int 2016 2016 2016 2016 2016 2016 2016 2016 2016 2016 ...
## $ Month : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Hours_watched : num 4.80e+08 4.42e+08 4.91e+08 3.78e+08 4.50e+08 ...
## $ Avg_viewers : int 646355 635769 660389 525696 605432 620903 600715 514289 504635 609737 ...
## $ Peak_viewers : int 1275257 1308032 1591551 1775120 1438962 1755888 1453743 1334490 1186009 1549150 ...
## $ Streams : int 7701675 7038520 7390957 6869719 7535519 6663363 7336215 6837386 6623528 6771852 ...
## $ Avg_channels : int 20076 20427 20271 16791 19394 18818 18030 16592 16880 19250 ...
## $ Games_streamed: chr "12,149" "12,134" "12,234" "12,282" ...
anyNA(twitch)
## [1] FALSE
colSums(is.na(twitch))
## year Month Hours_watched Avg_viewers Peak_viewers
## 0 0 0 0 0
## Streams Avg_channels Games_streamed
## 0 0 0
#data wrangling
twitch$period <- paste(as.character(twitch$Month),as.character(twitch$year),sep="/")
library(zoo)
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
twitch$period <- as.yearmon(twitch$period, format = "%m/%Y")
library("stringr")
twitch$Games_streamed <- str_remove_all(twitch$Games_streamed,",")
twitch$Games_streamed <- as.integer(twitch$Games_streamed)
twitch
## year Month Hours_watched Avg_viewers Peak_viewers Streams Avg_channels
## 1 2016 1 480241904 646355 1275257 7701675 20076
## 2 2016 2 441859897 635769 1308032 7038520 20427
## 3 2016 3 490669308 660389 1591551 7390957 20271
## 4 2016 4 377975447 525696 1775120 6869719 16791
## 5 2016 5 449836631 605432 1438962 7535519 19394
## 6 2016 6 446429345 620903 1755888 6663363 18818
## 7 2016 7 446331825 600715 1453743 7336215 18030
## 8 2016 8 382117373 514289 1334490 6837386 16592
## 9 2016 9 362833210 504635 1186009 6623528 16880
## 10 2016 10 453035001 609737 1549150 6771852 19250
## 11 2016 11 449688428 625435 1410023 6084871 20715
## 12 2016 12 490484523 660140 1385864 7848796 22291
## 13 2017 1 601251200 809220 2284184 8672879 24081
## 14 2017 2 500932308 746545 1524883 7166517 24219
## 15 2017 3 516399977 695020 1500730 5970626 23094
## 16 2017 4 535431301 744688 1823848 5507554 22078
## 17 2017 5 506927522 682271 1514023 8019065 22362
## 18 2017 6 510832330 710476 1935516 8053586 23412
## 19 2017 7 566899230 762986 1802287 8802016 25810
## 20 2017 8 533450366 717968 1824303 8358509 24711
## 21 2017 9 527591318 733784 1519456 7844109 25038
## 22 2017 10 585177534 787587 1835725 8479007 25723
## 23 2017 11 575551503 800488 1532756 8526330 26768
## 24 2017 12 573137507 771382 1496306 9288649 28181
## 25 2018 1 720220030 969340 2315343 11222734 33580
## 26 2018 2 615710441 917601 1735587 10729066 35548
## 27 2018 3 721341613 970850 2399946 13495972 38981
## 28 2018 4 729326135 1014361 2009005 13101238 39491
## 29 2018 5 762177378 1025810 1714327 13869534 38746
## 30 2018 6 789065029 1097447 2847241 13888432 39761
## 31 2018 7 796242999 1071659 1974783 14910026 41629
## 32 2018 8 855860641 1151898 3929074 15769306 44383
## 33 2018 9 815061013 1133603 2431863 15005606 44246
## 34 2018 10 852724761 1147678 2093870 14934884 43558
## 35 2018 11 865630693 1203936 2515155 14422767 45464
## 36 2018 12 845969862 1138586 2021262 16271867 48190
## 37 2019 1 949050474 1277322 2278352 17042119 55853
## 38 2019 2 881506851 1313721 2624711 15578420 56375
## 39 2019 3 947733580 1275549 2630058 16718941 55019
## 40 2019 4 888326199 1235502 2368981 15708616 51328
## 41 2019 5 939520272 1264495 2607531 15520889 48357
## 42 2019 6 939126720 1306156 3496976 14499225 47953
## 43 2019 7 916692478 1233771 2933491 14790881 48111
## 44 2019 8 999177398 1344787 2563475 14678509 48508
## 45 2019 9 878083331 1221256 2817054 13284517 46242
## 46 2019 10 900334210 1211755 2993052 13220814 45185
## 47 2019 11 879157590 1222750 2906707 12939422 45655
## 48 2019 12 881497670 1186403 2692333 13781104 45688
## 49 2020 1 1010010231 1359367 2400513 15053038 52875
## 50 2020 2 981752149 1412593 2630587 13455714 53882
## 51 2020 3 1218370086 1639798 3402641 17302441 66090
## 52 2020 4 1792309113 2492780 4455065 17814917 93867
## 53 2020 5 1755760388 2363069 4043730 20203413 100486
## 54 2020 6 1629282927 2266040 6060464 18160561 94052
## 55 2020 7 1572595815 2116548 3965956 18859473 95781
## 56 2020 8 1620682345 2181268 3861619 19146406 96421
## 57 2020 9 1585511181 2205161 4816995 18150678 91978
## 58 2020 10 1774145250 2387813 4208725 19774827 95170
## 59 2020 11 1789235196 2488505 4380326 20176665 103929
## 60 2020 12 1877319317 2526674 4860624 22089295 107006
## 61 2021 1 2173794168 2925698 6516666 25614207 119448
## 62 2021 2 1979581961 2950196 5274617 24319608 122763
## 63 2021 3 2173794168 2925698 6516666 25614207 119448
## 64 2021 4 2173794168 2925698 6516666 25614207 119448
## 65 2021 5 2308295297 3106723 5835026 22761038 110484
## 66 2021 6 1963630266 2731057 5746730 20285356 101892
## 67 2021 7 1953900874 2629745 4396750 21055358 101755
## 68 2021 8 1974586275 2657585 4778502 20767741 100701
## 69 2021 9 1857514531 2583469 5599210 18826493 95513
## 70 2021 10 2020197953 2718974 6086487 18209793 91858
## 71 2021 11 1812117484 2520330 5941684 17415525 90774
## Games_streamed period
## 1 12149 Jan 2016
## 2 12134 Feb 2016
## 3 12234 Mar 2016
## 4 12282 Apr 2016
## 5 12424 May 2016
## 6 12374 Jun 2016
## 7 12961 Jul 2016
## 8 13693 Aug 2016
## 9 13484 Sep 2016
## 10 13973 Oct 2016
## 11 13968 Nov 2016
## 12 14033 Dec 2016
## 13 14841 Jan 2017
## 14 14737 Feb 2017
## 15 14794 Mar 2017
## 16 15007 Apr 2017
## 17 15276 May 2017
## 18 15393 Jun 2017
## 19 15962 Jul 2017
## 20 15898 Aug 2017
## 21 15804 Sep 2017
## 22 15847 Oct 2017
## 23 16532 Nov 2017
## 24 16871 Dec 2017
## 25 18309 Jan 2018
## 26 18667 Feb 2018
## 27 19274 Mar 2018
## 28 19132 Apr 2018
## 29 19011 May 2018
## 30 18833 Jun 2018
## 31 19290 Jul 2018
## 32 19233 Aug 2018
## 33 18526 Sep 2018
## 34 18524 Oct 2018
## 35 18789 Nov 2018
## 36 19156 Dec 2018
## 37 19995 Jan 2019
## 38 19573 Feb 2019
## 39 20457 Mar 2019
## 40 20536 Apr 2019
## 41 20751 May 2019
## 42 20209 Jun 2019
## 43 20106 Jul 2019
## 44 20421 Aug 2019
## 45 19869 Sep 2019
## 46 19904 Oct 2019
## 47 20248 Nov 2019
## 48 20515 Dec 2019
## 49 21249 Jan 2020
## 50 20748 Feb 2020
## 51 22872 Mar 2020
## 52 24646 Apr 2020
## 53 25396 May 2020
## 54 24780 Jun 2020
## 55 25485 Jul 2020
## 56 25714 Aug 2020
## 57 29190 Sep 2020
## 58 31922 Oct 2020
## 59 32479 Nov 2020
## 60 32840 Dec 2020
## 61 34551 Jan 2021
## 62 34594 Feb 2021
## 63 34551 Mar 2021
## 64 34551 Apr 2021
## 65 36960 May 2021
## 66 36099 Jun 2021
## 67 36319 Jul 2021
## 68 36471 Aug 2021
## 69 35861 Sep 2021
## 70 36406 Oct 2021
## 71 35043 Nov 2021
library(ggplot2)
ggplot(twitch, aes(x=period, y=Hours_watched)) +
geom_line(color="#69b3a2", size=2, alpha=0.9, linetype=1) +
ggtitle("Twitch : Hours Watched")
#hours watched by years
ggplot(twitch, aes(x=period, y=Hours_watched/1000000)) +
geom_col(aes(fill = year)) +
ggtitle("Twitch : Hours Watched (in Millions)") +
ylab("Hours Watched") +
xlab("period")
Twitch Hours Watched has been skyrocketed since April 2020 (since pandemic), and viewership on that period grew more than 700 Millions Hour, compared to January 2020.
#peak and average viewers
ggplot(twitch, aes(x=period)) +
geom_line(aes(y=Avg_viewers/1000000, color="red"), size = 1) +
geom_line(aes(y=Peak_viewers/1000000, color="green"), size = 1) +
scale_color_discrete(name = 'viewers', labels = c("Peak", "Average")) +
ggtitle("Twitch : Peak Viewers and Average Viewers (in Millions)") +
ylab("viewers") +
xlab("period")
Not only Hour Watched, Average and Peak Viewers are also grew up more than 50 percent from the first quarter of 2020, and it’s up more than 60 percent over the same three months in 2019.
As Twitch popularity risen, on May 2021, as many as 36.960 unique games are streamed on Twitch.
twitch[twitch$Games_streamed==max(twitch$Games_streamed),]
## year Month Hours_watched Avg_viewers Peak_viewers Streams Avg_channels
## 65 2021 5 2308295297 3106723 5835026 22761038 110484
## Games_streamed period
## 65 36960 May 2021
Among thousands of unique games being streamed on Twitch, what games are popular on Twitch ?
#read the dataset : top 200 games on Twitch
tg <- read.csv(file = "twitch/Twitch_game_data.csv")
str(tg)
## 'data.frame': 14200 obs. of 12 variables:
## $ Rank : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Game : chr "League of Legends" "Counter-Strike: Global Offensive" "Dota 2" "Hearthstone" ...
## $ Month : int 1 1 1 1 1 1 1 1 1 1 ...
## $ Year : int 2016 2016 2016 2016 2016 2016 2016 2016 2016 2016 ...
## $ Hours_watched : int 94377226 47832863 45185893 39936159 16153057 10231056 8771452 7894571 7688369 6988475 ...
## $ Hours_Streamed : chr "1362044 hours" "830105 hours" "433397 hours" "235903 hours" ...
## $ Peak_viewers : int 530270 372654 315083 131357 71639 64432 46130 41588 84051 145728 ...
## $ Peak_channels : int 2903 2197 1100 517 3620 1538 1180 460 148 756 ...
## $ Streamers : int 129172 120849 44074 36170 214054 88820 33375 21396 10779 46462 ...
## $ Avg_viewers : int 127021 64378 60815 53749 21740 13769 11805 10625 10347 9405 ...
## $ Avg_channels : int 1833 1117 583 317 1549 659 461 276 71 274 ...
## $ Avg_viewer_ratio: num 69.3 57.6 104.3 169.3 14 ...
#data wrangling
tg$period <- paste(as.character(tg$Month),as.character(tg$Year),sep="/")
tg$period <- as.yearmon(tg$period, format = "%m/%Y")
tg$Hours_Streamed <- str_remove_all(tg$Hours_Streamed,"hours")
tg$Hours_Streamed <- as.integer(tg$Hours_Streamed)
str(tg)
## 'data.frame': 14200 obs. of 13 variables:
## $ Rank : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Game : chr "League of Legends" "Counter-Strike: Global Offensive" "Dota 2" "Hearthstone" ...
## $ Month : int 1 1 1 1 1 1 1 1 1 1 ...
## $ Year : int 2016 2016 2016 2016 2016 2016 2016 2016 2016 2016 ...
## $ Hours_watched : int 94377226 47832863 45185893 39936159 16153057 10231056 8771452 7894571 7688369 6988475 ...
## $ Hours_Streamed : int 1362044 830105 433397 235903 1151578 490002 342978 205569 53235 203646 ...
## $ Peak_viewers : int 530270 372654 315083 131357 71639 64432 46130 41588 84051 145728 ...
## $ Peak_channels : int 2903 2197 1100 517 3620 1538 1180 460 148 756 ...
## $ Streamers : int 129172 120849 44074 36170 214054 88820 33375 21396 10779 46462 ...
## $ Avg_viewers : int 127021 64378 60815 53749 21740 13769 11805 10625 10347 9405 ...
## $ Avg_channels : int 1833 1117 583 317 1549 659 461 276 71 274 ...
## $ Avg_viewer_ratio: num 69.3 57.6 104.3 169.3 14 ...
## $ period : 'yearmon' num Jan 2016 Jan 2016 Jan 2016 Jan 2016 ...
anyNA(tg)
## [1] FALSE
colSums(is.na(tg))
## Rank Game Month Year
## 0 0 0 0
## Hours_watched Hours_Streamed Peak_viewers Peak_channels
## 0 0 0 0
## Streamers Avg_viewers Avg_channels Avg_viewer_ratio
## 0 0 0 0
## period
## 0
#top 20 game, base on cummulative hours watched
game_top <- aggregate(formula = Hours_watched ~ Game,
data = tg,
FUN = sum)
game_top20 <- head(game_top[order(game_top$Hours_watched, decreasing = TRUE),],20)
game_top20
## Game Hours_watched
## 792 League of Legends 7355701761
## 740 Just Chatting 5646160637
## 535 Fortnite 4460090325
## 602 Grand Theft Auto V 3466141745
## 251 Counter-Strike: Global Offensive 3241700062
## 379 Dota 2 2954302914
## 645 Hearthstone 2037250487
## 1738 World of Warcraft 1761831070
## 921 Minecraft 1705990595
## 198 Call of Duty: Warzone 1692833252
## 1686 VALORANT 1667018763
## 1117 PLAYERUNKNOWN'S BATTLEGROUNDS 1475296705
## 53 Apex Legends 1310705300
## 1060 Overwatch 1298747092
## 299 Dead by Daylight 762216518
## 435 Escape From Tarkov 686076155
## 1617 Tom Clancy's Rainbow Six Siege 667381125
## 967 Music 606403130
## 40 Among Us 551653871
## 722 IRL 531248206
#visualizing the top 20 game
library(forcats)
ggplot(game_top20, aes(fct_reorder(Game, Hours_watched/1000000), Hours_watched/1000000)) +
geom_col(aes(fill = Game),show.legend=FALSE) +
ggtitle("Most Watched Game (in Millions Hours)") +
ylab("Hours Watched") +
xlab("Game") +
coord_flip ()
Among 36.960 unique games streamed on Twitch, League of Legends is the most watched games, with cummulavite more than 7 Biliion hours watched. Came in behind are Fornite, Grand Theft Auto V, Counter-Strike: Global Offensive, Dota 2.
Suprisingly, on second most watched is Just Chatting, and it is not a game. Just Chatting is for streamers doing a Q&A or just general discussion of anything that is Twitch-friendly with their community. Just Chatting first came to the Top 200 list on September 2018, and grew ever since.
tg[tg$Game == 'Just Chatting',]
## Rank Game Month Year Hours_watched Hours_Streamed Peak_viewers
## 6431 31 Just Chatting 9 2018 3791420 37737 105145
## 6604 4 Just Chatting 10 2018 37306055 443473 156436
## 6803 3 Just Chatting 11 2018 45819619 533962 227149
## 7003 3 Just Chatting 12 2018 54386753 684341 223139
## 7203 3 Just Chatting 1 2019 59064487 803672 184542
## 7404 4 Just Chatting 2 2019 51698098 733647 182185
## 7605 5 Just Chatting 3 2019 58236586 878360 211835
## 7804 4 Just Chatting 4 2019 58637850 862890 219754
## 8004 4 Just Chatting 5 2019 60652701 894976 194008
## 8203 3 Just Chatting 6 2019 61663846 908320 234098
## 8405 5 Just Chatting 7 2019 60624575 939477 175774
## 8605 5 Just Chatting 8 2019 65042052 1002669 203000
## 8803 3 Just Chatting 9 2019 63835583 971238 245697
## 9003 3 Just Chatting 10 2019 68419996 1089800 244285
## 9202 2 Just Chatting 11 2019 68267215 1067460 287294
## 9401 1 Just Chatting 12 2019 83590066 1265051 267822
## 9602 2 Just Chatting 1 2020 88378302 1409820 631876
## 9802 2 Just Chatting 2 2020 89799571 1379006 309048
## 10002 2 Just Chatting 3 2020 112003986 1808562 360279
## 10202 2 Just Chatting 4 2020 141922978 2303367 548653
## 10401 1 Just Chatting 5 2020 181536582 2602630 839576
## 10601 1 Just Chatting 6 2020 174681829 2438913 777678
## 10801 1 Just Chatting 7 2020 182688702 2582898 573912
## 11001 1 Just Chatting 8 2020 170478547 2607784 508828
## 11201 1 Just Chatting 9 2020 168706952 2550812 650779
## 11401 1 Just Chatting 10 2020 203159545 2757457 684417
## 11601 1 Just Chatting 11 2020 233960587 2867763 986105
## 11801 1 Just Chatting 12 2020 248573448 3149975 1117874
## 12001 1 Just Chatting 1 2021 248144653 3420670 2787896
## 12201 1 Just Chatting 2 2021 240445690 3202966 1138978
## 12401 1 Just Chatting 3 2021 270395369 3485083 1086313
## 12601 1 Just Chatting 4 2021 289547911 3544601 937749
## 12801 1 Just Chatting 5 2021 285948196 3522387 983678
## 13001 1 Just Chatting 6 2021 252985317 3188627 1034076
## 13201 1 Just Chatting 7 2021 240051080 3204980 772137
## 13401 1 Just Chatting 8 2021 249610555 3255305 736910
## 13601 1 Just Chatting 9 2021 222594651 2982598 773047
## 13801 1 Just Chatting 10 2021 217994303 2945069 715797
## 14001 1 Just Chatting 11 2021 231514981 2828547 878286
## Peak_channels Streamers Avg_viewers Avg_channels Avg_viewer_ratio
## 6431 613 13920 5273 52 100.47
## 6604 1163 76354 50210 596 84.12
## 6803 1213 91574 63726 742 85.81
## 7003 1847 115690 73198 921 79.47
## 7203 1757 134201 79494 1081 73.49
## 7404 2336 121349 77046 1093 70.47
## 7605 1781 135026 78380 1182 66.30
## 7804 1848 135011 81554 1200 67.96
## 8004 1834 139132 81632 1204 67.77
## 8203 2724 145157 85763 1263 67.89
## 8405 1771 146862 81594 1264 64.53
## 8605 1967 155221 87539 1349 64.87
## 8803 2777 148818 88783 1350 65.73
## 9003 2347 157126 92086 1466 62.78
## 9202 2373 161010 94947 1484 63.95
## 9401 3315 189224 112503 1702 66.08
## 9602 2959 214185 118947 1897 62.69
## 9802 2849 195799 129208 1984 65.12
## 10002 4180 248185 150745 2434 61.93
## 10202 4912 272519 197389 3203 61.62
## 10401 6961 314436 244329 3502 69.75
## 10601 12126 310815 242951 3392 71.62
## 10801 5586 324606 245879 3476 70.73
## 11001 5233 328529 229446 3509 65.37
## 11201 8045 332334 234641 3547 66.14
## 11401 6778 355568 273431 3711 73.68
## 11601 6855 376893 325397 3988 81.58
## 11801 8817 413135 334553 4239 78.91
## 12001 8240 464702 333976 4603 72.54
## 12201 13308 444507 358339 4773 75.07
## 12401 8309 469545 363923 4690 77.59
## 12601 8026 474257 402709 4929 81.69
## 12801 7465 462447 384856 4740 81.18
## 13001 8657 429682 351857 4434 79.34
## 13201 6307 425721 323083 4313 74.90
## 13401 6517 428053 335949 4381 76.68
## 13601 8506 394043 309589 4148 74.63
## 13801 6420 376011 293397 3963 74.02
## 14001 6493 368108 321995 3934 81.85
## period
## 6431 Sep 2018
## 6604 Oct 2018
## 6803 Nov 2018
## 7003 Dec 2018
## 7203 Jan 2019
## 7404 Feb 2019
## 7605 Mar 2019
## 7804 Apr 2019
## 8004 May 2019
## 8203 Jun 2019
## 8405 Jul 2019
## 8605 Aug 2019
## 8803 Sep 2019
## 9003 Oct 2019
## 9202 Nov 2019
## 9401 Dec 2019
## 9602 Jan 2020
## 9802 Feb 2020
## 10002 Mar 2020
## 10202 Apr 2020
## 10401 May 2020
## 10601 Jun 2020
## 10801 Jul 2020
## 11001 Aug 2020
## 11201 Sep 2020
## 11401 Oct 2020
## 11601 Nov 2020
## 11801 Dec 2020
## 12001 Jan 2021
## 12201 Feb 2021
## 12401 Mar 2021
## 12601 Apr 2021
## 12801 May 2021
## 13001 Jun 2021
## 13201 Jul 2021
## 13401 Aug 2021
## 13601 Sep 2021
## 13801 Oct 2021
## 14001 Nov 2021
Top 20 Watched games stats since 2016 :
tg20_2021 <- tg[(tg$Game %in% game_top20$Game),c("Game","period","Hours_watched")]
ggplot(tg20_2021, aes(x=period, y=Game, fill = Hours_watched/1000000)) +
geom_tile() +
scale_fill_distiller(palette = "RdPu") +
theme(axis.text.x = element_text(angle = 90)) +
guides(fill = guide_colourbar(title = "Hour Watched (in Millions)"))
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v tibble 3.1.6 v purrr 0.3.4
## v tidyr 1.1.4 v dplyr 1.0.7
## v readr 2.1.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
ggplot(tg20_2021, aes(period, Hours_watched/1000000)) +
geom_line() +
facet_wrap(~ Game) +
theme(axis.text.x = element_text(angle = 90)) +
ylab("Hours Watched")
From the heat map and plot of each Top 20 Games, we can see that IRL came up to the list by the end of 2016, and only staying for a while. As for Valorant, the game came in hard to the list and took the top chart in the beginning of 2020, but could not keep the momentum, and went down as hard as. But Valorant stays in the Top 20 Games.
What is the correlation between Viewers and Streamers ?
cor(tg$Streamers,tg$Avg_viewers)
## [1] 0.7523149
The average viewers and Streamers have a strong positive correlation. Putting the correlation in plot :
plot(tg$Streamers,tg$Avg_viewers, col = tg$Year,pch=18)
abline(lm(formula = Avg_viewers ~ Streamers,data = tg))
#top 20 game, base on cummulative number of Stream
top_stream <- aggregate(formula = Streamers ~ Game,
data = tg,
FUN = mean)
top_stream20 <- head(top_stream[order(top_stream$Streamers, decreasing = TRUE),],20)
top_stream20
## Game Streamers
## 535 Fortnite 586093.74
## 740 Just Chatting 268968.08
## 1686 VALORANT 264560.25
## 193 Call Of Duty: Modern Warfare 259737.43
## 198 Call of Duty: Warzone 244668.54
## 53 Apex Legends 227800.97
## 792 League of Legends 170968.72
## 921 Minecraft 137407.97
## 251 Counter-Strike: Global Offensive 121132.46
## 40 Among Us 114174.06
## 187 Call of Duty: Black Ops Cold War 106468.47
## 1060 Overwatch 99516.57
## 1617 Tom Clancy's Rainbow Six Siege 95507.68
## 602 Grand Theft Auto V 90509.35
## 1097 Phasmophobia 90338.00
## 1117 PLAYERUNKNOWN'S BATTLEGROUNDS 89889.38
## 488 FIFA 21 83933.38
## 1253 Rocket League 82399.87
## 539 Forza Horizon 5 78257.00
## 489 FIFA 22 77472.67
ggplot(top_stream20, aes(fct_reorder(Game, Streamers), Streamers)) +
geom_col(aes(fill = Game),show.legend=FALSE) +
ggtitle("Most Streamed Game") +
ylab("Streamers") +
xlab("Game") +
coord_flip ()
From the plot above, even though League of Legends is the most watched game on Twitch, but it’s average number of Streamer surpassed by Fornite.
Introduced in 2011, Twitch had a constant growth both from number of streamer and hours watched. By April 2020, along the pandemic, Twitch viewership grew more than 700 Millions hour. At its peak, on May 2021, 36.960 games are streamed on Twitch. Top 5 most watched games in Twitch, in order, are : League of Legends, Just Chatting, Fortnite, Grand Theft Auto V, Counter-Strike: Global Offensive. Most interesting is Just Chatting, a non-game content, where streamers doing Q&A, and general discussion, has been Top of the list most watched since May 2020. Streamer-wise, Fornite is the most streamed game, leaving League of Legends by more than double streamers.
knitr::include_graphics("tg20.gif")
library(reshape2)
##
## Attaching package: 'reshape2'
## The following object is masked from 'package:tidyr':
##
## smiths
library(dplyr)
library(gganimate)
library(extrafont)
## Registering fonts with R
library(grid)
library(png)
tg20 <- tg[tg$Rank <= 20,]
loadfonts(device = "win")
p =
ggplot(tg20, aes(Rank, group = Game, fill = as.factor(Game), color = as.factor(Game))) +
geom_tile(aes(y = Hours_watched/2, height = Hours_watched, width = 0.9), alpha = 0.8, color = NA, size = 4) +
geom_text(aes(y = 0, label = paste(Game, " ")), vjust = 0.2, hjust = 1, size=6, family = "serif") +
geom_text(aes(y= Hours_watched,label = paste0(" ",round(Hours_watched)), hjust=0)) +
coord_flip(clip = "off", expand = FALSE) +
scale_x_reverse() +
guides(color = "none", fill = "none") +
labs(title= "{closest_state} Most Watched Games",
x = NULL,
y = NULL) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, size = 28, colour = "#DC143C", family = "serif"),
plot.subtitle = element_text(hjust = 0.5, size = 12, colour = "#DC143C", family = "serif"),
plot.caption = element_text(size = 10, colour = "#000000", family = "serif"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.ticks.y = element_blank(),
axis.text.y = element_blank(),
axis.text.x = element_blank(),
axis.title.x = element_blank(),
plot.margin = margin(1,1,1,4, "cm")) +
transition_states(period, transition_length = 4, state_length = 1) +
ease_aes('cubic-in-out')
animate(p, fps = 25, duration = 60, width = 800,
height = 600, renderer = gifski_renderer("tg20.gif"))