Today we are going to take a look at the BART website and look at the visualizations presented on the website analytics.bart.gov.
We will take a look at json formated data, which is a very common data format for sharing data on the internet.
Directions:
- Create an R Project call BART.
- Download the devices data.
- Try the following R code to make the bar graph for the devices used to access the BART website.
Load the libraries used.
library(tidyverse)
library(jsonlite)
Read in the json data.
json_file <- "devices.json"
json_data <- fromJSON(json_file)
json_data
Fix the visits column so that it is a numeric value.
json_data <- json_data %>% mutate(visits = as.numeric(visits))
json_data
Make a table of the most recent day’s data.
json_data %>% filter( date == "20190922" ) %>%
group_by(device)
Make a bar plot.
json_data %>% filter( date == "20190922" ) %>%
ggplot(aes(y = visits, x = device)) +
geom_bar(stat="identity")
![](data:image/png;base64,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)
Make a bar plot using percentages.
json_data <- json_data %>% filter( date == "20190922" ) %>%
mutate(visits_percentage = 100*visits/sum(visits))
json_data
json_data %>% ggplot(aes(y = visits_percentage, x = device)) +
geom_bar(stat="identity") +
coord_flip()
![](data:image/png;base64,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)
LS0tCnRpdGxlOiAiQkFSVCBhbmQganNvbiBkYXRhIgpvdXRwdXQ6CiAgd29yZF9kb2N1bWVudDogZGVmYXVsdAogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQKICBwZGZfZG9jdW1lbnQ6IGRlZmF1bHQKLS0tCgpUb2RheSB3ZSBhcmUgZ29pbmcgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIEJBUlQgd2Vic2l0ZSBhbmQgbG9vayBhdCB0aGUgdmlzdWFsaXphdGlvbnMgcHJlc2VudGVkIG9uIHRoZSB3ZWJzaXRlIFthbmFseXRpY3MuYmFydC5nb3ZdKGh0dHBzOi8vYW5hbHl0aWNzLmJhcnQuZ292L2JhcnQpLgoKV2Ugd2lsbCB0YWtlIGEgbG9vayBhdCAqanNvbiogZm9ybWF0ZWQgZGF0YSwgd2hpY2ggaXMgYSB2ZXJ5IGNvbW1vbiBkYXRhIGZvcm1hdCBmb3Igc2hhcmluZyBkYXRhIG9uIHRoZSBpbnRlcm5ldC4KCiMjIERpcmVjdGlvbnM6CgoxLiBDcmVhdGUgYW4gUiBQcm9qZWN0IGNhbGwgQkFSVC4KMi4gRG93bmxvYWQgdGhlIFtkZXZpY2VzXShodHRwczovL3d3dy5iYXJ0Lmdvdi9zaXRlcy9kZWZhdWx0L2ZpbGVzL2FuYWx5dGljcy9kZXZpY2VzLmpzb24pIGRhdGEuCjMuIFRyeSB0aGUgZm9sbG93aW5nIFIgY29kZSB0byBtYWtlIHRoZSBiYXIgZ3JhcGggZm9yIHRoZSBkZXZpY2VzIHVzZWQgdG8gYWNjZXNzIHRoZSBCQVJUIHdlYnNpdGUuCgpMb2FkIHRoZSBsaWJyYXJpZXMgdXNlZC4KCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShqc29ubGl0ZSkKYGBgCgpSZWFkIGluIHRoZSBqc29uIGRhdGEuCgpgYGB7cn0KanNvbl9maWxlIDwtICJkZXZpY2VzLmpzb24iCgpqc29uX2RhdGEgPC0gZnJvbUpTT04oanNvbl9maWxlKQpqc29uX2RhdGEKYGBgCgpGaXggdGhlIHZpc2l0cyBjb2x1bW4gc28gdGhhdCBpdCBpcyBhIG51bWVyaWMgdmFsdWUuCgpgYGB7cn0KanNvbl9kYXRhIDwtIGpzb25fZGF0YSAlPiUgbXV0YXRlKHZpc2l0cyA9IGFzLm51bWVyaWModmlzaXRzKSkKanNvbl9kYXRhCmBgYAoKTWFrZSBhIHRhYmxlIG9mIHRoZSBtb3N0IHJlY2VudCBkYXkncyBkYXRhLgoKYGBge3J9Cmpzb25fZGF0YSAlPiUgZmlsdGVyKCBkYXRlID09ICIyMDE5MDkyMiIgKSAlPiUKICBncm91cF9ieShkZXZpY2UpIApgYGAKCk1ha2UgYSBiYXIgcGxvdC4KCmBgYHtyfQpqc29uX2RhdGEgJT4lIGZpbHRlciggZGF0ZSA9PSAiMjAxOTA5MjIiICkgJT4lCiAgZ2dwbG90KGFlcyh5ID0gdmlzaXRzLCB4ID0gZGV2aWNlKSkgKwogIGdlb21fYmFyKHN0YXQ9ImlkZW50aXR5IikKYGBgCgpNYWtlIGEgYmFyIHBsb3QgdXNpbmcgcGVyY2VudGFnZXMuCgpgYGB7cn0KanNvbl9kYXRhIDwtIGpzb25fZGF0YSAlPiUgZmlsdGVyKCBkYXRlID09ICIyMDE5MDkyMiIgKSAlPiUKICBtdXRhdGUodmlzaXRzX3BlcmNlbnRhZ2UgPSAxMDAqdmlzaXRzL3N1bSh2aXNpdHMpKQpqc29uX2RhdGEKYGBgCgpgYGB7cn0KanNvbl9kYXRhICU+JSBnZ3Bsb3QoYWVzKHkgPSB2aXNpdHNfcGVyY2VudGFnZSwgeCA9IGRldmljZSkpICsKICBnZW9tX2JhcihzdGF0PSJpZGVudGl0eSIpICsKICBjb29yZF9mbGlwKCkKYGBg