What is Twitch ?

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.

Twitch Popularity

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.

Games That Count

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.

Viewers And Streamers

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.

Conclusion

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.

Extra : Animated Plot of Top 20 Most Watched Game Since 2016

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