From 3fb7dfc5f2b237c44e81dd68fd1cb038fb233bf6 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 19 Aug 2016 12:33:17 +0200 Subject: [PATCH] Blog post for the new data exploration notebook by @kireyeu (#790) --- ...e-calendar-heatmap-of-device-data.markdown | 25 ++++++++++++++++++ .../blog/2016-08-data-exploration/heatmap.png | Bin 0 -> 18884 bytes 2 files changed, 25 insertions(+) create mode 100644 source/_posts/2016-08-19-github-style-calendar-heatmap-of-device-data.markdown create mode 100644 source/images/blog/2016-08-data-exploration/heatmap.png diff --git a/source/_posts/2016-08-19-github-style-calendar-heatmap-of-device-data.markdown b/source/_posts/2016-08-19-github-style-calendar-heatmap-of-device-data.markdown new file mode 100644 index 00000000000..b62133e82d1 --- /dev/null +++ b/source/_posts/2016-08-19-github-style-calendar-heatmap-of-device-data.markdown @@ -0,0 +1,25 @@ +--- +layout: post +title: "Github-style calendar heatmap of device data" +description: "Generating a Github-style calendar heatmap from your device data." +date: 2016-08-19 06:00:00 +0000 +date_formatted: "August 19, 2016" +author: Fabian Affolter +author_twitter: fabaff +comments: true +categories: How-To IoT-Data +og_image: /images/blog/2016-08-data-exploration/heatmap.png +--- + + +Thanks to [Anton Kireyeu](https://github.com/kireyeu) we are able to present another awesome [Jupyter notebook]. I guess that you all know the graph which Github is using to visualize your commits per day over a time-line. It's a so-called [heatmap]. If there are more commits, it's getting hotter. The latest [notebook][nb-prev] is capable to do the same thing for your devices. To be more precise, for the hours your devices are home. + +

+ +Heatmap +

+ +[heatmap]: https://en.wikipedia.org/wiki/Heat_map +[Jupyter notebook]: https://jupyter.org/ +[nb-prev]: http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/DataExploration-2/DataExploration-2.ipynb + diff --git a/source/images/blog/2016-08-data-exploration/heatmap.png b/source/images/blog/2016-08-data-exploration/heatmap.png new file mode 100644 index 0000000000000000000000000000000000000000..c69bc25edf4396e4f3eeb915f4fa8405cbee8c89 GIT binary patch literal 18884 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 TQvHaJVWMbj8fZLJv+(&}u^nRD literal 0 HcmV?d00001