Project: Open Heatmap | |
---|---|
Naam | Open Heatmap |
Door | Stitch |
Status | Afgerond |
Madskillz | rrd, jpgraph, php |
Doel / Omschrijving | |
heatmap met tijden dat Hack42 gemiddeld open is. | |
Alle Projecten - Project Toevoegen |
De grafiek geeft aan wanneer in het verleden Hack42 open is geweest. Hoe vaker de space open is, hoe donkerder dit terug te zien is in de grafiek. De duidelijkste grafiek is van 3 maanden, waarin (op moment van schrijven) te zien is dat Hack42 gemiddeld altijd open is op dinsdag- en vrijdagavond. Ook andere populaire dagen zijn te zien.
De samenstelling van de grafiek gebeurt door een gemiddelde van metingen per uur. Elke 5 seconden wordt er gemeten, dit wordt gemiddeld naar een uur. Deze uren, voor 3 maanden toch al 2000, worden opgeteld verdeeld over de dag. Een 100% score (donkere vlak) kan alleen als in de afgelopen weken, dat uur, de space steeds open was.
Mocht je spontaan langs willen komen, en je hebt geen sleutel? Dan weet je wanneer we er kunnen zijn.
Zie: https://hack42.nl/spacestate/open/
Parameters
Je kan de kleur en periode aanpassen via de parameters timespan en colormap. De volgende zijn aanwezig:
- timespan
- 1w
- 2w
- 3w
- 1m
- 2m
- 3m
- 4m
- colormap
- 0 tot 21
- Een overzicht: http://jpgraph.net/download/manuals/chunkhtml/ch22s08.html
Default voorbeeld:
https://hack42.nl/spacestate/open/openByWeekDayHours.php?timespan=3m&colormap=16
Blauw en 1 week:
https://hack42.nl/spacestate/open/openByWeekDayHours.php?timespan=1w&colormap=15
Insane 4m:
https://hack42.nl/spacestate/open/openByWeekDayHours.php?timespan=4m&colormap=2
Code snippets
RRD Export
rrdtool xport --start $e-$timespan --end $e --step 3600 --maxrows 4242 --enumds \ DEF:st=../state.rrd:state:AVERAGE \ CDEF:open=st,1,0,IF \ XPORT:open:\"isopen\" \
Separating hours
foreach($measurements["data"]["row"] as $row) { switch ($row["t"] % 86400) { case 82800: $hourOpen[0] += $row["v0"]; break; case 0: $hourOpen[1] += $row["v0"]; break;
Shifting hours (remove at begin, place at end)
for($i=0;$i<$steps;$i++){ $element = array_shift($array); $array[] = $element; }
Working with colormap input
$mp->colormap->SetMap($colormap); unset($colormap); $mp->SetCenterPos(0.5,0.47); $mp->SetSize(0.75, 0.7);
Details
Het is niet perfect, er zitten soms wat gekke waardes in of de schaal klopt niet. Dit komt omdat er allerlei gemiddelden worden gebruikt, en soms iets meer of minder dagen worden opgevraagd. Bij benadering is de grafiek goed, give or take 20%.
Handleidingen
- JPGraph: http://jpgraph.net/download/manuals/chunkhtml/ch22s08.html
- RRDTool: http://oss.oetiker.ch/rrdtool/doc/rrdgraph.en.html
- PHP: http://php.net/in_array