Acties:
  • +27 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 14:00
Aangezien er nog maar 1x/week wordt geupdate in veel dashboard, of op een provinciaal/veiligheidsregio-niveau, en we op tweakers zitten, hierbij de broncode (R) waarmee je zelf dagstaatjes kunt maken met gemeenten als kleinste bouwsteen.

bron: dagelijkse (update rond 10u) cijfers van het RIVM

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
library( data.table )
library( rjson )
library( ggplot2 )

DT <- data.table::rbindlist( 
  rjson::fromJSON( file = "https://data.rivm.nl/covid-19/COVID-19_aantallen_gemeente_cumulatief.json" ), 
  use.names = TRUE, 
  fill = TRUE )

DT[, Date_of_report := as.POSIXct( Date_of_report, tz = "Europe/Amsterdam" )]

#grafiek voor gemeenten Amsterdam, Rotterdam en Hillegom
#  aanpassen waar nodig ;-)
ggplot( data = DT[ Municipality_name %in% c( "Amsterdam","Rotterdam", "Hillegom" ) ], 
        aes( x = Date_of_report ) ) + 
  geom_line( aes( y = Total_reported), color = "red" ) +
  geom_line( aes( y = Hospital_admission), color = "blue" ) +
  geom_line( aes( y = Deceased) ) + 
  facet_wrap( ~Municipality_name, scales = "free_y" )


Hieronder als voorbeeld Amsterdam, Rotterdam en Hillegom (let op, y-as varieert per gemeente!)
Afbeeldingslocatie: https://tweakers.net/i/5pvJKHjwYeThs8FAt3qx6U6Czm8=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/SoSeuxgjihjK69n6isGHUxlB.png?f=user_large

[ Voor 14% gewijzigd door breew op 27-07-2020 17:06 ]


Acties:
  • +4 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 14:00
Een aantal plusjes.. leuk om te zien dat het wordt gewaardeerd.

Aangezien hier in huis de vakantie wat is uitgesteld, hierbij een update, met een mooi dynamisch kaartje erbij..
Kwak hem in een shiny app, en je hebt altijd de meest update versie ;-)

https://rpubs.com/wimpel/643785

Afbeeldingslocatie: https://tweakers.net/i/oDgAXhGiWFIu-FIsRuNuPQJaIEc=/234x176/filters:strip_exif()/f/image/M0Yc67eZNrkj7ZAUxEsoMnl5.png?f=fotoalbum_medium

broncode:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
library( data.table )
library( rjson )
library( ggplot2 )

###################################
# OPHALEN  COVID DATA BIJ RIVM
###################################
DT <- data.table::rbindlist( 
  rjson::fromJSON( file = "https://data.rivm.nl/covid-19/COVID-19_aantallen_gemeente_cumulatief.json" ), 
  use.names = TRUE, 
  fill = TRUE )
DT[, Date_of_report := as.POSIXct( Date_of_report, tz = "Europe/Amsterdam" )]
DT <- DT[ !is.na( Municipality_name ), ]

###################################
# ENKELE GRAFIEK
###################################
#bijvoorbeeld van gemeentsn Amsterdam, Rotterdam en Hillegom
ggplot( data = DT[ Municipality_name %in% c( "Amsterdam","Rotterdam", "Hillegom" ) ], 
        aes( x = Date_of_report ) ) + 
  geom_line( aes( y = Total_reported), color = "red" ) +
  geom_line( aes( y = Hospital_admission), color = "blue" ) +
  geom_line( aes( y = Deceased) ) + 
  facet_wrap( ~Municipality_name, scales = "free_y" )

###################################
# KAART
###################################
#maak titel voor kaart
kaarttitel <- tags$div( HTML( paste0( "<H1>COVID-19 kaart tm",  max( DT$Date_of_report, na.rm = TRUE ), "</H1>" ) ) )  
#inladen gemeenten polygon-shapefile
gem.sf <- gemeentegrenzen <- st_read("https://geodata.nationaalgeoregister.nl/cbsgebiedsindelingen/wfs?request=GetFeature&service=WFS&version=2.0.0&typeName=cbs_gemeente_2019_gegeneraliseerd&outputFormat=json") %>% 
  st_transform( 4326 ) %>% st_set_crs( 4326 )
#grafiek per gemeente aanmalen in een lijst
L <- lapply( gem.sf$statnaam, function(gemeente) {
  ggplot( data = DT[ Municipality_name == gemeente, ], aes( x = Date_of_report ) ) + 
    geom_line( aes( y = Total_reported), color = "red" ) +
    geom_line( aes( y = Hospital_admission), color = "blue" ) +
    geom_line( aes( y = Deceased) ) +
    labs( title     = gemeente,
          subtitle = paste0( "Cumulatief aantal gevallen tm ", max( DT$Date_of_report, na.rm = TRUE ) ),
          caption   = "Data: RIVM, Kaart: ESRI",
          x         = "",
          y         = "aantal" )
})

#bouw kaart
library(leaflet)
library(leafpop)
library(htmltools)
leaflet( options = leafletOptions( zoomControl = FALSE ) ) %>% 
  addControl( kaarttitel, position = "topleft" ) %>% 
  addTiles() %>% 
  addPolygons( data = gem.sf, group = "gemeentegrens" ) %>%
  addPopupGraphs( L, group = "gemeentegrens", width = 300, height = 400 )

Acties:
  • 0 Henk 'm!

  • Drumatiko
  • Registratie: Mei 2010
  • Niet online
d:)b

Fraai gemaakt breew!

Acties:
  • +1 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 14:00
versie 1.1, met nu kleurtjes gebaseerd op toename in de afgelopen 7 dagen, per 100000 inwoners, per gemeente.

https://rpubs.com/wimpel/COVID_gemeente_1_1

Ik ga niet elke keer de aangepaste broncode uploaden.. PB bij interesse ;-)

Acties:
  • +1 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Voor zover ik kan zien, wordt de data niet gecacht en slechts bijv. 1x per 24 uur opgehaald, correct? Misschien een idee om wel te implementeren, indien mogelijk in R?

Wel zo aardig voor de servertjes van 't RIVM, al zullen die er — hopelijk — ook wel een caching server tussen hebben zitten.

[ Voor 29% gewijzigd door Osiris op 28-07-2020 20:22 ]


Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 14:00
Osiris schreef op dinsdag 28 juli 2020 @ 20:21:
Voor zover ik kan zien, wordt de data niet gecacht en slechts bijv. 1x per 24 uur opgehaald, correct? Misschien een idee om wel te implementeren, indien mogelijk in R?

Wel zo aardig voor de servertjes van 't RIVM, al zullen die er — hopelijk — ook wel een caching server tussen hebben zitten.
Wees gerust: deze versie is een statische leaflet... Alleen bij aanmaken van de html-file (die ik nu handmatig upload) wordt nieuwe data bij het RIVM opgehaald. De bovenstaande code leidt to het maken van de kaart, en wordt (gelukkig ;-) ) niet elke keer uitgevoerd als de kaart wordt opgevraagd..
Als je dit in een shiny-app zou doen, dan zou ik inderdaad cachen (bijvoorbeeld elke 24h een update van de kaart maken en deze pushen naar shiny/github) .. Maar aangezien alles nu nog statisch (en de de kaart dus volledig buiten de servers van het RIVM omgaat) is.. is dat niet nodig.

En zo ver ga ik het ook niet ontwikkelen denk ik :)

Wel irritant dat CBS en RIVM andere gemeentenamen gebruiken... die blijven nu grijs...
code:
1
2
CBH: Bergen(N-H)
RIVM: Bergen(NH.)

Eens kijken hoe we dat bugje vanavond/vannacht/morgen gaan platten... handmatige conversietabel, of fuzzy joinen ;-)

[ Voor 10% gewijzigd door breew op 28-07-2020 20:35 ]


Acties:
  • +2 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 14:00
De vakantie zit er weer op.. tijd voor een update van de kaart, nu met data per provincie en veiligheidsregio
En de bug met verschillende gemeentenamen is geplet ;-)

https://rpubs.com/wimpel/covid_kaart_v3

2020-8-18 update
vanavond weer een persco... hierbij een update met de meest recente data...
https://rpubs.com/wimpel/covid19NL-20200817

[ Voor 26% gewijzigd door breew op 18-08-2020 10:14 ]


Acties:
  • +1 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 14:00
Ik ben hetzelfde aan het maken voor België, maar loop tegen wat issues aan...
Zo snap ik de gemeentenamen denk ik niet helemaal, en hebben sommige gemeenten een dermate laag inwoneraantal, dat één enkele besmetting de boel direct op diep-roos per 100.000 inwoners zet.

Ook mis ik een aantal gemeenten in de data (grijs op de kaart)... geen idee wat daarmee aan de hand is?

Is er een data-nerd in de buurt die mij wat tips kan geven omtrent Belgisch bronmateriaal?

Afbeeldingslocatie: https://tweakers.net/i/qCUuxsQjMAByR00vHy8dDx3eGos=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/GGAgeZNNXfqu1MeUguVZEbVd.png?f=user_large

[ Voor 8% gewijzigd door breew op 21-08-2020 11:11 ]


Acties:
  • +7 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 14:00
zo... aangezien ik de dataset van rioolwatermetingen nog niet had geprobeerd, leek het me leuk om daar eens in te duiken aangezien dit ook een aardig objectieve meetmethodiek kan zijn om toename van verspreiding te duiden..
Aangezien ik niet precies weet welk 'verzorgingsgebied' elk rioolwatermeetpunt heeft, heb ik 'simpel' een net van thiessen polygons gemaakt op basis van de meetlocaties... klopt het exact: vast niet, geeft het een goed beeld: vast wel. Ook heb ik een paar "dubbele" stations weggelaten, deze lagen op dezelfde locatie, maar hebben blijkbaar een ander 'gebied'.. kon ik zo snel niets mee, dus *weg* ;-)

Ik weet niet precies hoe de meetdata te duiden, dus geen conclusies ;-)
Wellicht breng ik iemand anders hier weer op een leuk idee qua COVID-datavisualisatie...

op polygon klikken = grafiekje metingen krijgen..

klik hier voor de interactieve kaart

Afbeeldingslocatie: https://tweakers.net/i/mSU41-fBc-1WalkNjvfgNgfEWZo=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/10Hl2Qxj9grjyFaec891rUpd.png?f=user_large

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#rioolwaterdata RIVM op de kaart
library( data.table )
library( sf )
library( ggplot2 )
library( leaflet )
library( leafpop )
#ophalen dataset RIVM
DT <- data.table::fread( "https://data.rivm.nl/covid-19/COVID-19_rioolwaterdata.csv" )
#maak simple feature van unieke stations, transformeer naar WGS84
DT.uniek <- DT[ !duplicated(RWZI_AWZI_code), ]
DT.uniek <- DT.uniek[ !duplicated(DT.uniek, by = c("X_coordinate", "Y_coordinate") ), ]

DT.sf <- sf::st_as_sf( DT.uniek, coords = c("X_coordinate", "Y_coordinate"), crs = 28992 ) %>%
  sf::st_transform( crs = 4329 )
#maak thiessen polygons om stations (ok, is aanname, maar geeft redelijk beeld)
DT.poly <- sf::st_voronoi( sf::st_union( DT.sf ) ) %>%
  sf::st_collection_extract()
#kaart NL, bron: https://www.imergis.nl/htm/opendata.htm
kaart_nl <- sf::st_read( "i:/brondata/kaart_nl/2018-Imergis_landsgrens_kustlijn.shp" ) %>%
  sf::st_transform( 4329 )
#clip thiessen polygons op kaart NL
DT.poly.clip <- sf::st_intersection( DT.poly, kaart_nl ) %>% 
  sf::st_sf() %>%
  #join with stations
  sf::st_join( DT.sf )
  #join metingen
#maak grafieken per station
L <- lapply( DT.poly.clip$RWZI_AWZI_code, function(x) {
  ggplot( data = DT[ DT$RWZI_AWZI_code == x & DT$Representative_measurement == TRUE, ], aes( x = Date_measurement, y = RNA_per_ml, group = 1)) +
    geom_line() +
    labs( title = paste0( "meetstation:", x ) )
})
#maak leaflet
l <- leaflet::leaflet() %>% 
  leaflet::addTiles() %>%
  leaflet::addPolygons( data = DT.poly.clip,
                        weight = 2,
                        popup = leafpop::popupGraph( L, width = 400, height = 300) ) 

l

Acties:
  • 0 Henk 'm!

  • Admiral Freebee
  • Registratie: Februari 2004
  • Niet online
breew schreef op vrijdag 21 augustus 2020 @ 10:53:
Ik ben hetzelfde aan het maken voor België, maar loop tegen wat issues aan...
Zo snap ik de gemeentenamen denk ik niet helemaal, en hebben sommige gemeenten een dermate laag inwoneraantal, dat één enkele besmetting de boel direct op diep-roos per 100.000 inwoners zet.

Ook mis ik een aantal gemeenten in de data (grijs op de kaart)... geen idee wat daarmee aan de hand is?

Is er een data-nerd in de buurt die mij wat tips kan geven omtrent Belgisch bronmateriaal?

[Afbeelding]
Als je specifieke vragen hebt wil ik wel proberen te helpen. Het uitdrukken per 100.000 inwoners heeft inderdaad al wel meermaals tot vragen geleid bij inwoners uit kleine gemeenten.

Acties:
  • +1 Henk 'm!

  • Asterion
  • Registratie: Maart 2008
  • Laatst online: 14:03
breew schreef op vrijdag 21 augustus 2020 @ 10:53:
Ik ben hetzelfde aan het maken voor België, maar loop tegen wat issues aan...
Zo snap ik de gemeentenamen denk ik niet helemaal, en hebben sommige gemeenten een dermate laag inwoneraantal, dat één enkele besmetting de boel direct op diep-roos per 100.000 inwoners zet.

Ook mis ik een aantal gemeenten in de data (grijs op de kaart)... geen idee wat daarmee aan de hand is?

Is er een data-nerd in de buurt die mij wat tips kan geven omtrent Belgisch bronmateriaal?

[Afbeelding]
Het grote grijze blok "recht" onder Zeeland, daar zijn gemeentes die gefusioneerd zijn naar 1 grote gemeente.
Lovendegem, Zomergem en Waarschoot zijn nu Lievegem geworden. Aalter, Knesselare worden Aalter en zo zijn er nog enkelen. Wellicht loopt het daar ergens mis?

De fusies kan je hier terugvinden: Fusies 2019

Mocht je met vragen zitten, stuurt gerust een pb!

Acties:
  • 0 Henk 'm!

  • Belindo
  • Registratie: December 2012
  • Laatst online: 16:25

Belindo

▶ ─🔘─────── 15:02

Oh leuk. Hier ga ik eens naar kijken met Power BI.

Coding in the cold; <brrrrr />

Pagina: 1