X-Git-Url: http://git.vanrenterghem.biz/R/project-wa-schools.git/blobdiff_plain/f27fc3a28ef7ba08696e0075191311dfccfca458..4a262294342cd273e52b82bb33d371904f840449:/WA_active_schools.R diff --git a/WA_active_schools.R b/WA_active_schools.R index 7792496..5076c60 100644 --- a/WA_active_schools.R +++ b/WA_active_schools.R @@ -1,17 +1,20 @@ # install libgdal-dev on debian first -#install.packages("rgdal") -library(rgdal) +# install libudunits2-dev on debian first +#install.packages("sf") +library(sf) library(tidyverse) +library(broom) #install.packages("OpenStreetMap") library(OpenStreetMap) library(viridis) # Read the shapefile obtained from WA opendata (SLIP) -shape <- readOGR(dsn = "data/", layer = "CurrentActiveSchoolsSemester12017_PublicDET_014") -shape.df <- tidy(shape) -shape.df$latitude <- as.numeric(as.character(shape.df$latitude)) -shape.df$longitude <- as.numeric(as.character(shape.df$longitude)) -shape.df$totalschoo <- as.numeric(as.character(shape.df$totalschoo)) +#shape <- readOGR(dsn = "data/", layer = "CurrentActiveSchoolsSemester12017_PublicDET_014") +shape.df <- st_read(dsn = "data/", layer = "CurrentActiveSchoolsSemester12017_PublicDET_014", stringsAsFactors = FALSE) +shape.df$latitude <- as.numeric(shape.df$latitude) +shape.df$longitude <- as.numeric(shape.df$longitude) +shape.df$totalschoo <- as.numeric(shape.df$totalschoo) +shape.df$totalsecon <- as.numeric(shape.df$totalsecon) # filter out remote islands shape.df <- filter(shape.df,longitude > 100) @@ -62,19 +65,29 @@ shape.metro.df <- filter(shape.df, abs(latitude) <= max(abs(lat.metro)), abs(longitude) <= max(abs(lon.metro)), abs(longitude) >= min(abs(lon.metro))) mapLatLon.metro <- openproj(map.metro) +# Let's look at secondary school only +# 95th percentile of school size +secon95th <- quantile(shape.metro.df[,"totalsecon">0]$totalsecon,probs = .95) autoplot(mapLatLon.metro) + - geom_point(data = shape.metro.df, + geom_point(data = filter(shape.metro.df, totalsecon > 0), # geom_sf is not yet in ggplot2 on CRAN, so sticking to this for now aes(x = longitude, y = latitude, - color = totalschoo), - show.legend = TRUE) + + color = totalsecon, + size = totalsecon) + ) + + geom_text(data = filter(shape.metro.df, totalsecon > secon95th), # name top 5% schools + aes(x = longitude, + y = latitude, + label = schoolname), + size = 2) + scale_color_viridis(option="viridis", name = "Number\nof pupils") + + guides(size = FALSE) + # Do not show legend for size, as color is the main key theme(legend.position = "right", axis.text = element_blank(), axis.ticks = element_blank()) + - labs(title = "Western Australian schools", - subtitle = "Perth metro area only", + labs(title = "Western Australian secondary schools", + subtitle = "Perth metro area", caption = "Map tiles by Stamen Design, under CC BY 3.0.\nMapdata by OpenStreetMap, under ODbL. School data © Government of WA 2017.\n Dep. of Education & Training.", x="",