Data Received: www.nfl.com

Definition: Heatmap is a graphical representation of data where the individual values contained in a matrix are represented as colors.

library(tidyverse)
## Loading tidyverse: ggplot2
## Loading tidyverse: tibble
## Loading tidyverse: tidyr
## Loading tidyverse: readr
## Loading tidyverse: purrr
## Loading tidyverse: dplyr
## Conflicts with tidy packages ----------------------------------------------
## filter(): dplyr, stats
## lag():    dplyr, stats
library(heatmap3)
QBS<-read_csv("C:/Users/senet/Desktop/CSC 463 Data Visualization Tools/R/Mini Class 10/QBS.csv")
## Parsed with column specification:
## cols(
##   Player = col_character(),
##   Team = col_character(),
##   Pos = col_character(),
##   Comp = col_integer(),
##   Att = col_integer(),
##   Pct = col_double(),
##   `Att/G` = col_double(),
##   Yds = col_number(),
##   Avg = col_double(),
##   `Yds/G` = col_double(),
##   TD = col_integer(),
##   Int = col_integer(),
##   `1st` = col_integer(),
##   `1st%` = col_double(),
##   Lng = col_integer(),
##   `20+` = col_integer(),
##   `40+` = col_integer(),
##   Sck = col_integer(),
##   Rate = col_double()
## )
str(QBS)
## Classes 'tbl_df', 'tbl' and 'data.frame':    50 obs. of  19 variables:
##  $ Player: chr  "Sean Mannion" "Sam Bradford" "Ryan Fitzpatrick" "Alex Smith" ...
##  $ Team  : chr  "LA" "MIN" "TB" "KC" ...
##  $ Pos   : chr  "QB" "QB" "QB" "QB" ...
##  $ Comp  : int  1 32 22 179 126 206 161 175 153 161 ...
##  $ Att   : int  1 43 33 259 204 309 237 248 232 264 ...
##  $ Pct   : num  100 74.4 66.7 69.1 61.8 66.7 67.9 70.6 65.9 61 ...
##  $ Att/G : num  0.5 21.5 16.5 32.4 29.1 38.6 33.9 35.4 33.1 33 ...
##  $ Yds   : num  12 382 290 2181 1699 ...
##  $ Avg   : num  12 8.9 8.8 8.4 8.3 8.2 8 7.9 7.9 7.8 ...
##  $ Yds/G : num  6 191 145 273 243 ...
##  $ TD    : int  0 3 3 16 19 16 13 11 9 19 ...
##  $ Int   : int  0 0 2 0 8 2 4 4 6 5 ...
##  $ 1st   : int  1 17 14 106 84 124 92 93 90 97 ...
##  $ 1st%  : num  100 39.5 42.4 40.9 41.2 40.1 38.8 37.5 38.8 36.7 ...
##  $ Lng   : int  12 44 41 78 72 54 74 54 88 72 ...
##  $ 20+   : int  0 8 6 25 28 34 28 31 20 24 ...
##  $ 40+   : int  0 1 1 6 4 7 7 7 5 7 ...
##  $ Sck   : int  0 5 2 22 19 21 16 7 12 22 ...
##  $ Rate  : num  116.7 124.4 99.3 115.4 103 ...
##  - attr(*, "spec")=List of 2
##   ..$ cols   :List of 19
##   .. ..$ Player: list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Team  : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Pos   : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Comp  : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ Att   : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ Pct   : list()
##   .. .. ..- attr(*, "class")= chr  "collector_double" "collector"
##   .. ..$ Att/G : list()
##   .. .. ..- attr(*, "class")= chr  "collector_double" "collector"
##   .. ..$ Yds   : list()
##   .. .. ..- attr(*, "class")= chr  "collector_number" "collector"
##   .. ..$ Avg   : list()
##   .. .. ..- attr(*, "class")= chr  "collector_double" "collector"
##   .. ..$ Yds/G : list()
##   .. .. ..- attr(*, "class")= chr  "collector_double" "collector"
##   .. ..$ TD    : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ Int   : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ 1st   : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ 1st%  : list()
##   .. .. ..- attr(*, "class")= chr  "collector_double" "collector"
##   .. ..$ Lng   : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ 20+   : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ 40+   : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ Sck   : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ Rate  : list()
##   .. .. ..- attr(*, "class")= chr  "collector_double" "collector"
##   ..$ default: list()
##   .. ..- attr(*, "class")= chr  "collector_guess" "collector"
##   ..- attr(*, "class")= chr "col_spec"
NFL<- QBS[order(QBS$Pct),]
NFL
## # A tibble: 50 x 19
##               Player  Team   Pos  Comp   Att   Pct `Att/G`   Yds   Avg
##                <chr> <chr> <chr> <int> <int> <dbl>   <dbl> <dbl> <dbl>
##  1        Chad Henne   JAX    QB     0     2   0.0     2.0     0   0.0
##  2    Derek Anderson   CAR    QB     2     7  28.6     7.0    17   2.4
##  3      Drew Stanton   ARI    QB     5    14  35.7    14.0    66   4.7
##  4 Mitchell Trubisky   CHI    QB    38    80  47.5    20.0   512   6.4
##  5     Scott Tolzien   IND    QB     9    18  50.0    18.0   128   7.1
##  6    Brock Osweiler   DEN    QB     2     4  50.0     4.0    18   4.5
##  7       Cooper Rush   DAL    QB     1     2  50.0     2.0     2   1.0
##  8     DeShone Kizer   CLE    QB   111   213  52.1    30.4  1144   5.4
##  9     Brett Hundley    GB    QB    31    59  52.5    19.7   244   4.1
## 10      Cody Kessler   CLE    QB    10    19  52.6    19.0   121   6.4
## # ... with 40 more rows, and 10 more variables: `Yds/G` <dbl>, TD <int>,
## #   Int <int>, `1st` <int>, `1st%` <dbl>, Lng <int>, `20+` <int>,
## #   `40+` <int>, Sck <int>, Rate <dbl>
row.names(NFL) <- NFL$Player
## Warning: Setting row names on a tibble is deprecated.
NFL
## # A tibble: 50 x 19
##               Player  Team   Pos  Comp   Att   Pct `Att/G`   Yds   Avg
##  *             <chr> <chr> <chr> <int> <int> <dbl>   <dbl> <dbl> <dbl>
##  1        Chad Henne   JAX    QB     0     2   0.0     2.0     0   0.0
##  2    Derek Anderson   CAR    QB     2     7  28.6     7.0    17   2.4
##  3      Drew Stanton   ARI    QB     5    14  35.7    14.0    66   4.7
##  4 Mitchell Trubisky   CHI    QB    38    80  47.5    20.0   512   6.4
##  5     Scott Tolzien   IND    QB     9    18  50.0    18.0   128   7.1
##  6    Brock Osweiler   DEN    QB     2     4  50.0     4.0    18   4.5
##  7       Cooper Rush   DAL    QB     1     2  50.0     2.0     2   1.0
##  8     DeShone Kizer   CLE    QB   111   213  52.1    30.4  1144   5.4
##  9     Brett Hundley    GB    QB    31    59  52.5    19.7   244   4.1
## 10      Cody Kessler   CLE    QB    10    19  52.6    19.0   121   6.4
## # ... with 40 more rows, and 10 more variables: `Yds/G` <dbl>, TD <int>,
## #   Int <int>, `1st` <int>, `1st%` <dbl>, Lng <int>, `20+` <int>,
## #   `40+` <int>, Sck <int>, Rate <dbl>
rownames(NFL)
##  [1] "Chad Henne"         "Derek Anderson"     "Drew Stanton"      
##  [4] "Mitchell Trubisky"  "Scott Tolzien"      "Brock Osweiler"    
##  [7] "Cooper Rush"        "DeShone Kizer"      "Brett Hundley"     
## [10] "Cody Kessler"       "C.J. Beathard"      "Tom Savage"        
## [13] "EJ Manuel"          "Ryan Mallett"       "Matt Moore"        
## [16] "Blake Bortles"      "Matt Cassel"        "Jared Goff"        
## [19] "Matthew Stafford"   "Jacoby Brissett"    "Philip Rivers"     
## [22] "Carson Wentz"       "Ben Roethlisberger" "Kevin Hogan"       
## [25] "Carson Palmer"      "Trevor Siemian"     "Deshaun Watson"    
## [28] "Jameis Winston"     "Marcus Mariota"     "Dak Prescott"      
## [31] "Jay Cutler"         "Cam Newton"         "Andy Dalton"       
## [34] "Russell Wilson"     "Tyrod Taylor"       "Case Keenum"       
## [37] "Joe Flacco"         "Eli Manning"        "Derek Carr"        
## [40] "Matt Ryan"          "Aaron Rodgers"      "Mike Glennon"      
## [43] "Ryan Fitzpatrick"   "Tom Brady"          "Kirk Cousins"      
## [46] "Alex Smith"         "Josh McCown"        "Drew Brees"        
## [49] "Sam Bradford"       "Sean Mannion"

The data was loaded into a data frame, but it has to be a data matrix to make the heatmap.

nfl_matrix <- data.matrix(NFL)
## Warning in data.matrix(NFL): NAs introduced by coercion

## Warning in data.matrix(NFL): NAs introduced by coercion

## Warning in data.matrix(NFL): NAs introduced by coercion
heatmap(as.matrix(nfl_matrix[,4:19]))

head(nfl_matrix)
##                   Player Team Pos Comp Att  Pct Att/G Yds Avg Yds/G TD Int
## Chad Henne            NA   NA  NA    0   2  0.0     2   0 0.0     0  0   0
## Derek Anderson        NA   NA  NA    2   7 28.6     7  17 2.4    17  0   0
## Drew Stanton          NA   NA  NA    5  14 35.7    14  66 4.7    66  0   1
## Mitchell Trubisky     NA   NA  NA   38  80 47.5    20 512 6.4   128  2   2
## Scott Tolzien         NA   NA  NA    9  18 50.0    18 128 7.1   128  0   2
## Brock Osweiler        NA   NA  NA    2   4 50.0     4  18 4.5    18  0   0
##                   1st 1st% Lng 20+ 40+ Sck Rate
## Chad Henne          0  0.0   0   0   0   0 39.6
## Derek Anderson      1 14.3   9   0   0   0 39.6
## Drew Stanton        2 14.3  27   2   0   2 21.7
## Mitchell Trubisky  21 26.3  70   7   2  11 66.2
## Scott Tolzien       5 27.8  32   4   0   4 33.8
## Brock Osweiler      0  0.0   9   0   0   0 62.5
str(nfl_matrix)
##  num [1:50, 1:19] NA NA NA NA NA NA NA NA NA NA ...
##  - attr(*, "dimnames")=List of 2
##   ..$ : chr [1:50] "Chad Henne" "Derek Anderson" "Drew Stanton" "Mitchell Trubisky" ...
##   ..$ : chr [1:19] "Player" "Team" "Pos" "Comp" ...
nfl_heatmap <- heatmap(nfl_matrix, Rowv=NA, Colv=NA, col = cm.colors(256), scale="column", margins=c(5,10))

nfl_heatmap <- heatmap(nfl_matrix, Rowv=NA, Colv=NA, col = heat.colors(256), scale="column", margins=c(5,10))