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