Jak tworzyć interaktywne wykresy?
Najłatwiejszy sposób aby budować interaktywne wykresy w R, to skorzystanie z pakietu rCharts
(http://rcharts.io/).
Pakiet rCharts tworzy stronę HTML z osadzonymi bibliotekami JavaScript. Można korzystać z bibliotek NVD3
, Highcharts
, Leaflet
i innych. Pełna lista znajduje się na stronie pakietu rCharts
.
Poniżej przedstawimy kilka wybranych przykładów. Szczegółowa lista dostępnych opcji znajduje się na tej stronie.
Biblioteka NVD3
Wykresy wykorzystujące bibliotekę NVD3 można wykonać używać funkcji nPlot()
.
Szeroki opis dostępnych wykresów w tej bibliotece znajduje się tutaj http://nvd3.org/.
Wykres liniowy
Przedstawmy wykres liniowy na bazie danych o śmiertelności osób w różnych wieku. Dane pochodzą ze strony http://www.mortality.org/. Szczegółowy opis co znajduje się w której kolumnie znajduje się na na tej stronie.
Wybierzemy tylko dane z roku 2009 i pokażemy wyniki dla obu płci. Zacznijmy od wczytania danych.
przezycia <- archivist::aread("pbiecek/Przewodnik/arepo/609491e5ec491f240cbeafe377743e21")
head(przezycia)
## Year Age mx qx ax lx dx Lx Tx ex Gender
## 1 1958 0 0.06562 0.06249 0.24 100000 6249 95231 6863376 68.63 Female
## 2 1958 1 0.00474 0.00472 0.50 93751 443 93530 6768146 72.19 Female
## 3 1958 2 0.00173 0.00173 0.50 93308 162 93228 6674616 71.53 Female
## 4 1958 3 0.00119 0.00119 0.50 93147 111 93091 6581388 70.66 Female
## 5 1958 4 0.00085 0.00085 0.50 93036 79 92996 6488297 69.74 Female
## 6 1958 5 0.00071 0.00071 0.50 92957 66 92924 6395301 68.80 Female
przezycia2009 <- przezycia[przezycia$Year == 2009 &
przezycia$Age != "110+",]
Przystępujemy do tworzenia wykresu.
Po zbudowaniu wykresu funkcją nPlot()
, należy dookreślić szerokość i wysokość wykresy oraz nazwy osi.
library(rCharts)
p1 <- nPlot(mx ~ Age, group = "Gender", data = przezycia2009, type = "lineChart")
p1$chart(yScale = "#! d3.scale.log() !#")
p1$xAxis(axisLabel = 'Wiek')
p1$yAxis(axisLabel = 'Śmiertelność')
p1$set(width = 750, height = 590)
# p1$save("rCharts1.html", standalone=TRUE)
Następnie wykres jest gotowy do umieszczenia na stronie www.
Wykres jest stroną html, można ją umieścić na innej stronie poleceniem iframe
.
Wykres punktowy
Ta sama funkcja może być użyta do zbudowania wykresu punktowego. Wystarczy jako typ wskazać type="scatterChart"
.
Na poniższym przykładzie pracujemy z danymi o współczynniku liczby zgonów i urodzin na 1000 mieszkańców w różnych krajach. Dodatkowo pokazane jest jak można modyfikować informację o etykiecie.
library(SmarterPoland)
head(countries)
## country birth.rate death.rate population continent
## 1 Afghanistan 34.1 7.7 30552 Asia
## 2 Albania 12.9 9.4 3173 Europe
## 3 Algeria 24.3 5.7 39208 Africa
## 4 Andorra 8.9 8.4 79 Europe
## 5 Angola 44.1 13.9 21472 Africa
## 6 Antigua and Barbuda 16.5 6.8 90 Americas
p2 <- nPlot(death.rate ~ birth.rate, group = "continent", data = countries, type = "scatterChart")
p2$xAxis(axisLabel = 'Zgonów na 1000 osób')
p2$yAxis(axisLabel = 'Urodzin na 1000 osób')
p2$chart(tooltipContent = "#! function(key, x, y, e){
return 'Kraj: ' + e.point.country
} !#")
p2$set(width = 750, height = 590)
# p2$save("rCharts2.html", standalone=TRUE)
Biblioteka MorrisJS
Biblioteka MorrisJS udostępnia inne ciekawe wykresy, głównie liniowe i słupkowe. Przegląd wykresów z tej biblioteki znajduje się na stronie http://morrisjs.github.io/morris.js/
library(tidyr)
eZycia <- przezycia %>%
dplyr::filter(Age == 0) %>%
dplyr::mutate(Year = as.character(Year)) %>%
dplyr::select(Year, Gender, ex) %>%
spread(Gender, ex)
head(eZycia)
## Year Female Male
## 1 1958 68.63 63.03
## 2 1959 68.34 62.62
## 3 1960 70.63 64.81
## 4 1961 70.81 64.86
## 5 1962 70.54 64.55
## 6 1963 71.52 65.41
m1 <- mPlot(x = 'Year', y = c('Female', 'Male'), type = 'Line',
data = eZycia, pointSize = 0, lineWidth = 1)
m1$set(width = 750, height = 590)
# m1$save("rCharts3.html", standalone=TRUE)
Biblioteka Leaflet
Biblioteka Leaflet
jest świetnym narzędzie do przedstawiania danych na mapach.
Wystarczy skazać współrzędne początkowego widoku, dodać markery i można pokazywać interaktywną mapę.
map1 = Leaflet$new()
map1$setView(c(52.22, 21), zoom = 12)
map1$marker(c(52.22223, 21.00728), bindPopup = "Politechnika Warszawska, MiNI")
map1$marker(c(52.21167, 20.9815), bindPopup = "Uniwersytet Warszawski, MIM")
map1$marker(c(52.23925, 21.01742), bindPopup = "Uniwersytet Warszawski, Centrala")
# map1$save("rCharts4.html", standalone=TRUE)
Więcej
Kompletna lista wykresów wspieranych przez pakiet rCharts znajduje się na stronie http://www.rpubs.com/dnchari/rcharts.