Czy wiecie, na których skoczniach Kamil Stoch zdobył najwięcej punktów w poprzednim sezonie?
Jakiś czas temu natknąłem się na pakiet pheatmaps dla programu R, który generuje ładniejsze mapy ciepła niż standardowy heatmap z R. Stąd też jego nazwa p(retty)heatmaps.
Zobaczmy te mapy na przykładzie. Zazwyczaj pakiet pheatmaps jest wykorzystywany w genomice, ale my poniżej użyjemy go do prezentacji wyników w skokach narciarskich w sezonie 2013/2014 (Zbiór danych użyty w konkursie na wizualizacje danych podczas konferencji PAZUR, zobacz zgłoszenia tutaj).
Dla każdego ze skoczków, który zdobył przynajmniej 400 punktów w klasyfikacji generalnej policzymy ile zdobył punktów na każdej ze skoczni.
Następnie tę macierz (skoczek vs. skocznia) przedstawiamy za pomocą mapy ciepła.
Mapa ciepła to wizualizacja macierzy liczb, w której wartość liczbowa danej komórki macierzy przedstawiona jest kolorem, a podobieństwo wierszy i kolumn przedstawione jest za pomocą dendrogramów.
Dane o skokach wczytamy z pakietu SmarterPoland. Są to dane użyte w konkursie na najlepszą wizualizację podczas konferencji PAZUR 2014.
Na początek trochę dplyr’owej magii aby policzyć liczbę punktów zdobytych do klasyfikacji generalnych uzyskanych na poszczególnych skoczniach przez poszczególnych skoczków.
library(pheatmap) library(tidyr) library(dplyr) # operator %>% library(PogromcyDanych) # zbiór danych, zainstaluj: # library(devtools); install_github("pbiecek/PogromcyDanych") library(RColorBrewer) library(SmarterPoland) country_jumper_points <- skiJumps2013 %>% mutate(jumper = paste(jumperSurname, jumperName)) %>% group_by(jumper, compName) %>% summarise(max.points = sum(classPoints, na.rm=TRUE)) %>% group_by(jumper) %>% filter(sum(max.points, na.rm=TRUE) > 400) %>% spread(compName, max.points) %>% as.data.frame() rownames(country_jumper_points) <- country_jumper_points[,1] country_jumper_points <- country_jumper_points[,-1] # how this table looks like country_jumper_points[1:5,1:5] # Bischofshofen Engelberg Falun Garmisch-Partenkirchen Innsbruck # AMMANN SIMON 50 38 32 60 80 # BARDAL ANDERS 40 105 40 20 18 # DAMJAN JERNEJ 0 NA 24 9 NA # DIETHART THOMAS 100 90 14 100 45 # FREUND SEVERIN 26 11 100 0 16 |
A później prezentacja brzydkich standardowych map ciepła (ang. heatmaps) i znacznie ładniejszych map ciepła z pakietu pheatmap.
heatmap(as.matrix(country_jumper_points)) |
Domyślnie przedstawiana legenda, czytelniejsza kratownica, lepiej dobrane domyślnie kolory i lepiej dobrane marginesy. To wszystko jest na plus dla pakietu pheatmaps.
pheatmap(country_jumper_points, main="Where they've got points") |
pheatmap(country_jumper_points, border="white", color = brewer.pal(9,"Blues"), main="Where they've got points") |
Wpisy z kategorii Duże i złożone powstają przy współpracy z firmą CodiLime.
Error: could not find function „%>%”
Faktycznie trzeba najpierw zdefiniowac ten „special operator” czy teoretycznie jest to wbudowana funkcja?
Ach,
moja wersja SmarterPoland ładuje ten pakiet sama, ale ta CRANowa tego nie robi, dzięŻi za zwrócenie na to uwagi
Trzeba załadować dplyr i PogromcyDanych
czyli aby działało trzeba jeszcze:
library(dplyr)
library(PogromcyDanych)
aby to ostatnie zadziałało trzeba wcześniej:
library(devtools)
install_github(„pbiecek/PogromcyDanych”)
wielkie dzieki, smiga.