ladyLein startpagina 0. R install & library 1. R start 2. Vectoren (een rij waarden) 3. Matrixen (tabellen) 4. Statistieken (min, max, gemiddelde, standaard defiatie) 5. Factoren (-categorieën/typen) 6. Data frames (wat is een dataframe, inlezen txt en csv bestanden) 7. Correlatie in de grafiek 8. Plot 9. GGplot2 (lijn, staaf, taart) 10. Functies (o.a.if else, for, while, string, datum) 11. SQL / dplyr (gegevens ophalen uit tabellen) 12. WAR meetkastjes en KNMI - Locaties meetkastjes - Data één meetkastje - Meerdere meetkastjes +tijdreeks - Waar welke meetkastjes - KNMI data - WAR met KNMI data - Analyse meetkastjes - Waarnemingen 13. Qgis gegevens op de kaart zetten |
Data van meerdere meetkastjes WAR met KNMI data in één grafiekHaal de data van meerdere meetkastjes op Haal de data van het knmi op Voeg ze samen Let op: de data van het KNMI loopt een dag achter, oftewel: gister zit nog niet in de knmi dataset. Haal de data van meerdere meetkastjes op# maak een variabele genaamd 'start', met het beginmoment van je grafiekstart<-"2018-07-25,00:00" # maak een variabele genaamd 'eind', met het eindmoment van je grafiek end<-"2018-08-10,23:59" # maak variabele 'ids', met de nummers van de meetkastjes die je wilt bekijken # voorbeelden: "13", "13,14", "1-50", "1,2,10-20", etc. ids<-"1-14,16,18-55,57-61,64-65,67,69-70,72-87,89-97,99-105,107-113,115-123,125-128,130-133,139,145,148,173-174,2000-2007,2009-2016,2018,2020,2021" (Amersfoort) ids<-"11,14,19,26,31,37,41,47" (windroos) ids<-"67,60,74,22,10" (centrum, west, zuid, noord, oost) # haal de data op van de server van Meet je Stad data<-read.table(paste("http://meetjestad.net/data? type=sensors&start=",start,"&end=",end,"&ids=",ids,"&format=csv",sep=""),sep="\t",header=T,fill=T) # op de server zijn alle metingen opgeslagen in Universal Time Code. # deze tijd omrekenen naar onze lokale tijd ts<-as.POSIXct(data$timestamp, origin="1970-01-01", tz="UTC") data$localtime<-as.POSIXlt(ts, "CET") attributes(data$localtime)$tzone <- "CET" # zoek de hoogste en de laagste temperatuur van de opgehaalde datareeks # we gebruiken het 5e en 95e percentiel van de meetwaarden, en trekken daar 1 (of meer) graad af of tellen het erbij ylow<-quantile(data$temperature,0.05)-1 yhigh<-quantile(data$temperature,0.95)+1 # wil je wel de pieken en dalen, dan zet je je eigen min en max neer. ylow<-15 yhigh<-45 Haal de data van het KNMI op# maak een variabele genaamd 'start', met het beginmoment van je grafiekstart<-"2018-07-25,00:00" # maak een variabele genaamd 'eind', met het eindmoment van je grafiek end<-"2018-08-10,23:59" # zet de starttijd en eindtijd om in het formaat van de KNMI API knmistart<-unlist(strsplit(start, ","))[1] knmistart<-gsub("-", "", knmistart) knmiend<-unlist(strsplit(end, ","))[1] knmiend<-gsub("-", "", knmiend) # haal temperatuur en luchtvochtigheid data op van het KNMI knmidata<-read.table(paste("http://projects.knmi.nl/klimatologie/uurgegevens/getdata_uur.cgi?stns=260&vars=T:U&start=",knmistart,"01&end=",knmiend,"24",sep=""), sep=",", header=F) # voeg kolomnamen toe (in het engels anders kan je ze niet met de WAR meetgegevens samenvoegen) colnames(knmidata) <- c("station", "day", "hour", "temperature", "humidity") # mogelijke data van het KNMI om uit te kiezen, of allemaal in één keer knmidata<-read.table(paste("http://projects.knmi.nl/klimatologie/uurgegevens/getdata_uur.cgi?stns=260&vars=DD:FF:FX:T:U:SQ:DR:R:O:S:P&start=",knmistart,"01&end=",knmiend,"24",sep=""), sep=",", header=F) colnames(knmidata) <- c("station", "day", "hour", "windrichting", "windsnelheid", "windstoot", "temperature", "humidity", "duurzon","duurneerslag","regenvoorkomend","onweervoorkomend", "sneeuwvoorkomend","luchtdruk") # zet de KNMI UTC tijd om naar lokale tijd tsknmi <- as.POSIXct(strptime(paste(knmidata$day,knmidata$hour, sep=""), "%Y%m%d%H"), tz="UTC") # verschuif de KNMI tijd 30 minuten naar voren, # omdat de meetwaarden het gemiddelde zijn over het voorgaande uur knmidata$localtime <- as.POSIXlt(tsknmi, "CET", tz="CET")-30*60 attributes(knmidata$localtime)$tzone <- "CET" # voeg een kolom toe met het station 'id': knmi knmidata$id<-rep("knmi",dim(knmidata)[1]) # deel de temperatuur door 10 om dezelfde schaal als MJS te krijgen knmidata$temperature<- knmidata$temperature/10 Voeg meetkastjes-data en KNMI-data samenmjsknmidata<-rbind.fill(data, knmidata)Plot met allemaal opmaakggplot(data=mjsknmidata, aes(localtime,temperature, colour = as.factor(id))) +geom_line(aes(group = as.factor(id)) ) + geom_line(data=subset(mjsknmidata,id=="knmi"), colour="black", size=1 ) + ylim(ylow,yhigh) + scale_x_datetime(breaks = date_breaks("1 days"),labels = date_format("%d/%m/%Y-%H:%m")) + scale_y_continuous(breaks=seq(15, 45, 5)) + theme(axis.text.x = element_text(angle = 90, hjust = 1, color = "black", size=15)) + theme(axis.text.y = element_text(angle = 0, hjust = 1, color = "black", size=15)) + ggtitle("Hittegolf 2018") + theme(plot.title = element_text(size=20, face="bold", colour="#990000")) + xlab("datum met tijd") + theme(axis.title.x = element_text(face="bold", colour="#990000", size=15)) + ylab("temperatuur schaal") + theme(axis.title.y = element_text(face="bold", colour="#990000", size=15)) Met de code colour="black", size=1 wordt de KNMI-lijn zwart en dik. Het is een aparte lijn dus in de legenda moet je die zelf toevoegen. Op deze manier kan je net zoveel lijnen toevoegen als je zelf wilt. Allemaal aan elkaar gezet met + Met date_breaks("1 days") kan je aangeven hoe de x-as de datums weergeeft. 1 dan wordt elke dag weergegeven, bv bij een week. 15 dan wordt er om de 15 dagen de datum neergezet, bv bij een jaar. Met breaks=seq(15, 45, 5) geef je de waarden op de y-as aan. 15 is de minimum temperatuur, 45 is de maximum temperatuur en 5 zijn de stappen. Met ggtitle kan je de titel opgeven en daarna de layout daarvan. Terug naar top |