Repository where I mostly put random python scripts.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

507 lines
364 KiB

  1. {
  2. "cells": [
  3. {
  4. "cell_type": "code",
  5. "execution_count": 1,
  6. "metadata": {},
  7. "outputs": [
  8. {
  9. "name": "stderr",
  10. "output_type": "stream",
  11. "text": [
  12. "── \u001b[1mAttaching packages\u001b[22m ─────────────────────────────────────── tidyverse 1.3.0 ──\n",
  13. "\n",
  14. "\u001b[32m✔\u001b[39m \u001b[34mggplot2\u001b[39m 3.3.0 \u001b[32m✔\u001b[39m \u001b[34mpurrr \u001b[39m 0.3.3\n",
  15. "\u001b[32m✔\u001b[39m \u001b[34mtibble \u001b[39m 3.0.1 \u001b[32m✔\u001b[39m \u001b[34mdplyr \u001b[39m 0.8.4\n",
  16. "\u001b[32m✔\u001b[39m \u001b[34mtidyr \u001b[39m 1.0.2 \u001b[32m✔\u001b[39m \u001b[34mstringr\u001b[39m 1.4.0\n",
  17. "\u001b[32m✔\u001b[39m \u001b[34mreadr \u001b[39m 1.3.1 \u001b[32m✔\u001b[39m \u001b[34mforcats\u001b[39m 0.5.0\n",
  18. "\n",
  19. "── \u001b[1mConflicts\u001b[22m ────────────────────────────────────────── tidyverse_conflicts() ──\n",
  20. "\u001b[31m✖\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mfilter()\u001b[39m masks \u001b[34mstats\u001b[39m::filter()\n",
  21. "\u001b[31m✖\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mlag()\u001b[39m masks \u001b[34mstats\u001b[39m::lag()\n",
  22. "\n",
  23. "------------------------------------------------------------------------------\n",
  24. "\n",
  25. "You have loaded plyr after dplyr - this is likely to cause problems.\n",
  26. "If you need functions from both plyr and dplyr, please load plyr first, then dplyr:\n",
  27. "library(plyr); library(dplyr)\n",
  28. "\n",
  29. "------------------------------------------------------------------------------\n",
  30. "\n",
  31. "\n",
  32. "Attaching package: ‘plyr’\n",
  33. "\n",
  34. "\n",
  35. "The following objects are masked from ‘package:dplyr’:\n",
  36. "\n",
  37. " arrange, count, desc, failwith, id, mutate, rename, summarise,\n",
  38. " summarize\n",
  39. "\n",
  40. "\n",
  41. "The following object is masked from ‘package:purrr’:\n",
  42. "\n",
  43. " compact\n",
  44. "\n",
  45. "\n",
  46. "\n",
  47. "Attaching package: ‘lubridate’\n",
  48. "\n",
  49. "\n",
  50. "The following objects are masked from ‘package:dplyr’:\n",
  51. "\n",
  52. " intersect, setdiff, union\n",
  53. "\n",
  54. "\n",
  55. "The following objects are masked from ‘package:base’:\n",
  56. "\n",
  57. " date, intersect, setdiff, union\n",
  58. "\n",
  59. "\n",
  60. "Parsed with column specification:\n",
  61. "cols(\n",
  62. " date = \u001b[31mcol_character()\u001b[39m,\n",
  63. " class = \u001b[31mcol_character()\u001b[39m,\n",
  64. " club = \u001b[32mcol_double()\u001b[39m,\n",
  65. " hw = \u001b[32mcol_double()\u001b[39m,\n",
  66. " stress = \u001b[32mcol_double()\u001b[39m,\n",
  67. " fatigue = \u001b[32mcol_double()\u001b[39m,\n",
  68. " productivity = \u001b[32mcol_double()\u001b[39m,\n",
  69. " diet = \u001b[32mcol_double()\u001b[39m,\n",
  70. " work_total = \u001b[32mcol_double()\u001b[39m,\n",
  71. " total_hours = \u001b[32mcol_double()\u001b[39m\n",
  72. ")\n",
  73. "\n"
  74. ]
  75. }
  76. ],
  77. "source": [
  78. "library(tidyverse)\n",
  79. "\n",
  80. "library(plyr)\n",
  81. "library(lubridate)\n",
  82. "\n",
  83. "data <- read_csv(\"data.csv\", col_names=TRUE)"
  84. ]
  85. },
  86. {
  87. "cell_type": "code",
  88. "execution_count": 2,
  89. "metadata": {},
  90. "outputs": [
  91. {
  92. "name": "stdout",
  93. "output_type": "stream",
  94. "text": [
  95. "\u001b[90m# A tibble: 251 x 10\u001b[39m\n",
  96. " date class club hw stress fatigue productivity diet work_total\n",
  97. " \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<chr>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m\n",
  98. "\u001b[90m 1\u001b[39m 1/3/… 0 0 0 4 8 6 2 3.82\n",
  99. "\u001b[90m 2\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \n",
  100. "\u001b[90m 3\u001b[39m 1/4/… 0 0 0 5 7 6 3 0 \n",
  101. "\u001b[90m 4\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \n",
  102. "\u001b[90m 5\u001b[39m 1/5/… 0 0 0 4 6 6 1 0 \n",
  103. "\u001b[90m 6\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \n",
  104. "\u001b[90m 7\u001b[39m 1/6/… 0 2 0 6 7 5 4 3.95\n",
  105. "\u001b[90m 8\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \n",
  106. "\u001b[90m 9\u001b[39m 1/7/… 0 0 0 3 5 7 7 5.8 \n",
  107. "\u001b[90m10\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \u001b[31mNA\u001b[39m \n",
  108. "\u001b[90m# … with 241 more rows, and 1 more variable: total_hours \u001b[3m\u001b[90m<dbl>\u001b[90m\u001b[23m\u001b[39m\n"
  109. ]
  110. }
  111. ],
  112. "source": [
  113. "print(data)"
  114. ]
  115. },
  116. {
  117. "cell_type": "code",
  118. "execution_count": 3,
  119. "metadata": {},
  120. "outputs": [],
  121. "source": [
  122. "data <- data %>% drop_na(date)\n",
  123. "\n",
  124. "data$class <- as.numeric(data$class)\n",
  125. "\n",
  126. "data[is.na(data)] = 0"
  127. ]
  128. },
  129. {
  130. "cell_type": "code",
  131. "execution_count": 4,
  132. "metadata": {},
  133. "outputs": [
  134. {
  135. "name": "stdout",
  136. "output_type": "stream",
  137. "text": [
  138. "\u001b[90m# A tibble: 6 x 10\u001b[39m\n",
  139. " date class club hw stress fatigue productivity diet work_total\n",
  140. " \u001b[3m\u001b[90m<date>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m \u001b[3m\u001b[90m<dbl>\u001b[39m\u001b[23m\n",
  141. "\u001b[90m1\u001b[39m 2020-01-03 0 0 0 4 8 6 2 3.82\n",
  142. "\u001b[90m2\u001b[39m 2020-01-04 0 0 0 5 7 6 3 0 \n",
  143. "\u001b[90m3\u001b[39m 2020-01-05 0 0 0 4 6 6 1 0 \n",
  144. "\u001b[90m4\u001b[39m 2020-01-06 0 2 0 6 7 5 4 3.95\n",
  145. "\u001b[90m5\u001b[39m 2020-01-07 0 0 0 3 5 7 7 5.8 \n",
  146. "\u001b[90m6\u001b[39m 2020-01-08 0 0 3 3 4 5 6 4.63\n",
  147. "\u001b[90m# … with 1 more variable: total_hours \u001b[3m\u001b[90m<dbl>\u001b[90m\u001b[23m\u001b[39m\n"
  148. ]
  149. }
  150. ],
  151. "source": [
  152. "data$date <- parse_date(data$date, \"%m/%d/%y\")\n",
  153. "print(head(data))"
  154. ]
  155. },
  156. {
  157. "cell_type": "code",
  158. "execution_count": 5,
  159. "metadata": {},
  160. "outputs": [],
  161. "source": [
  162. "\n",
  163. "data$ymd = lubridate::isoweek(ymd(data$date))\n",
  164. "\n",
  165. "data$wday = wday(data$date)"
  166. ]
  167. },
  168. {
  169. "cell_type": "code",
  170. "execution_count": 6,
  171. "metadata": {},
  172. "outputs": [
  173. {
  174. "data": {
  175. "image/png": "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\nAAAAV
  176. "text/plain": [
  177. "plot without title"
  178. ]
  179. },
  180. "metadata": {
  181. "image/png": {
  182. "height": 420,
  183. "width": 420
  184. },
  185. "text/plain": {
  186. "height": 420,
  187. "width": 420
  188. }
  189. },
  190. "output_type": "display_data"
  191. }
  192. ],
  193. "source": [
  194. "ggplot(data, aes(ymd, wday))+ \n",
  195. " geom_tile(aes(fill= total_hours), color=\"purple\") +\n",
  196. " ggtitle(\"Daily Hours\") +\n",
  197. " labs(x=\"School Week\", y=\"Day of Week\") +\n",
  198. " scale_y_continuous(name=\"Day of week\",trans = \"reverse\",\n",
  199. " breaks=c(1,2,3,4,5,6,7),\n",
  200. " labels=c(\"Sun\", \"Mon\", \"Tue\", \"Wed\",\"Thr\",\"Fri\",\"Sat\")) +\n",
  201. " theme_bw()\n",
  202. "ggsave(file=\"weekly.png\", width=10, height=4, dpi=300)"
  203. ]
  204. },
  205. {
  206. "cell_type": "code",
  207. "execution_count": 7,
  208. "metadata": {},
  209. "outputs": [
  210. {
  211. "data": {
  212. "image/png": "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\npauAT
  213. "text/plain": [
  214. "plot without title"
  215. ]
  216. },
  217. "metadata": {
  218. "image/png": {
  219. "height": 420,
  220. "width": 420
  221. },
  222. "text/plain": {
  223. "height": 420,
  224. "width": 420
  225. }
  226. },
  227. "output_type": "display_data"
  228. }
  229. ],
  230. "source": [
  231. "data %>% group_by(ymd) %>%\n",
  232. " dplyr::summarise(total = sum(total_hours),\n",
  233. " work_t = sum(work_total), \n",
  234. " class_t = sum(class),\n",
  235. " hw_t = sum(hw)) %>%\n",
  236. " gather(key,value, total, work_t, class_t, hw_t) %>%\n",
  237. " ggplot(mapping=aes(x = ymd)) + \n",
  238. " ggtitle(\"Weekly Hours\") +\n",
  239. " geom_line(mapping=aes(y = value, colour = key)) +\n",
  240. " labs(x=\"School Week\", y=\"Hours\") +\n",
  241. " scale_colour_discrete(name=\"Categories\",\n",
  242. " breaks=c(\"total\", \"work_t\", \"class_t\", \"hw_t\"),\n",
  243. " labels=c(\"Total Hours\", \"Work\", \"In Class\", \"HW\")) + \n",
  244. " theme_bw()\n",
  245. "ggsave(file=\"weeklyLineGraph.png\", width=8, height=4, dpi=300)"
  246. ]
  247. },
  248. {
  249. "cell_type": "code",
  250. "execution_count": 8,
  251. "metadata": {},
  252. "outputs": [
  253. {
  254. "data": {
  255. "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAIAAAByhViMAAAACXBIWXMAABJ0AAASdAHeZh94\nAAAgAElEQVR4nOzdeZhU1bkv/u/au+bq6qrqeaAHQAQEUUEQEAUZNA4JxilRY4wxuWqGk/x8\nbqKJJ2qMU07Mz5zjTdQYTbjGGOcBZxFBUQSERgSZaeh5rq6uqq5x73X/2E3Zdld317B3VXX1\n+3nucx971x7W7pNu3l7rfd/FOOcghBBCCCHjn5DpARBCCCGEEHVQYEcIIYQQkiMosCOEEEII\nyREU2BFCCCGE5AgK7AghhBBCcgQFdoQQQgghOYICO0IIIYSQHEGB3VfceuutjLFHHnkk0wMh\nhBBCCElYdgV2O3fuZIwxxi6++OKRznnttdeUc/7zP/8zoZs/+eSTr7766ujnOJ3Ompoam82W\n0J2T4/P57HY7Y+ycc85Jw+MIIYQQkvOyK7BTMMZef/31jo6OmJ+uWbOGMZbEbX/5y1+OGdjd\ncsstR48evfrqq5O4f6Keeuqpvr6+KVOmbNiwYf/+/Wl4IiGEEEJyWzYGdqecckokEvnnP/85\n/COXy7V27dpZs2Yles8jR460tbWpMTrVPPzwwzab7cEHHwRAi7+EEEIISV02Bnbz5s0rLi7+\n+9//Pvyjf//738FgcNWqVUOOc87/9re/LVq0yGazmc3mmTNn/uY3v/H5fMqnl1122dSpUwE8\n/vjjjLElS5YAuO222xhjr7766l/+8pfKykqHw4FYOXayLP/lL3+ZP39+Xl6ezWZbsWLFBx98\nMPjRzz///PLlywsKCgwGQ0VFxfnnn//mm2+O+Y6bN2/euXPnxRdffOGFF5aXl69ZsyYQCAw+\nYdmyZYyxtWvXDrlQWYlesWJFPC8+0msC6Ovr+9WvfjVz5kyz2Ww0GqdNm/aLX/yir69v8LMa\nGhquuuqq4uJii8Uyf/78F198saenhzF2xhlnxPmdJ4QQQkg6ZWNgxzm/9NJLd+/e/emnnw75\n6B//+EdpaemiRYuGHP/ud7/7wx/+8NixYzfccMPNN9/scDjuvvvuJUuWeDweANddd933vvc9\nAAsXLnzwwQd/9rOfATAYDAA2btz4i1/8YunSpVdccUXMwXzrW9/68Y9/3N/ff+21165evXrr\n1q1Lly598sknlU8fe+yxyy+/fPfu3VdcccWtt956/vnnb9269cILL4yeMJKHH34YwLXXXiuK\n4jXXXONyuZ599tnBJ1x11VUAXnjhhSEXKqddc8018bz4SK8ZDocvuuii+++/32q1/uQnP7np\npptEUXzggQdWrlwpSZJyYXd395IlS55++unp06f/8pe/POWUU66++mpl2CaTKc7vPCGEEELS\nimeTuro6ANdee+3WrVsB/OhHPxr86d69ewHcfPPNzz33HIDbbrtNOf7MM88AmDdvXl9fn3JE\nluWf/OQnAG699VbliHLJ9ddfH73bvffeC8But7/99tvRg7fccguAhx9+WPny6aefBnD++edH\nIhHlyL59+ywWi9Vq9Xg8nPOTTz4ZwKFDh6J3aGxstNlsCxcuHOU1u7q6TCZTbW2tLMvKPQEs\nWrRo8Dk9PT0Gg8HpdIZCoejBQCBgt9vNZrPypvG8eMzXVOLFhQsXRt8rGAzOmDEDwKuvvqoc\nue222wBcfvnl0as++ugjs9kMYOnSpfF/5wkhhBCSNtk4Ywdg/vz5J5988tNPPx0MBqMH16xZ\nA+D73//+kJMfe+wxAPfdd1+0mpUx9rvf/U6v1yuXxKRUYMycOfPcc88d6RxlOfjXv/61KIrK\nkenTp99zzz033nijUtvR29vLGLNardFLJk2a1NXVtXnz5lHe7oknnggEAtddd50yhunTpy9e\nvHjz5s27du2KnuN0Os877zyXy7V+/frowbfeesvtdq9evVp503hePOZrzp0798UXX3zooYei\n72UwGFavXg0gOgZlFfgXv/hF9KrFixd/+9vfHvwiyX3nCSGEEKKRLA3sAFx//fUul+ull15S\nvpRl+Z///OeCBQuGV0588sknABYvXjz4oMPhmD17dmtra0NDwyhPGb6qO9hHH30EYN68eYMP\n/vznP3/ggQemTJkC4Otf/zrn/JxzznniiSeixRnK6udIOOePPvqoIAjK6rBCiVYfffTRwWcq\nq7HPP/989MiQddj4X3zIa9bW1n7zm988/fTTAXg8nra2tra2NovFAsDv9wOQZXnfvn2CIJx6\n6qmDL7zwwgsHf5nKd54QQgghqsvewO473/mO0WiMllCsW7euqanpuuuuG3Ka3+/3er0A8vLy\n2FcpC7vNzc2jPKW4uHikj3w+n8/nM5lMyvpjTH/6059uuOGGw4cPX3/99eXl5bNmzbrlllvq\n6+tHeeLbb799+PDhlStXVldXRw9+61vfslqt//znPweXHXzjG9/Iy8t7+eWXlby3QCCwdu3a\nkpISZe4toRcf/povv/zykiVLzGZzfn5+eXl5eXn5HXfcEf3U6/WGQiGbzabX6wdfVVNTE/3v\nFL/zhBBCCFGdLtMDGFFhYeHq1auff/75xsbGqqqqNWvWmM3mK6+8cshpylIjY+z222+PeZ+y\nsrJRnjIkcBlMEAQA4XCYcz5S5zy9Xv/II4/ccccdr7766ptvvrl+/fr/+q//+tOf/vTkk0+O\nVI2h1B+88847Me/5r3/964c//KHy3xaLZfXq1U899dTGjRuXL1/+xhtveDye6667TqfTJfri\nQ17zr3/96w033GCz2W688cYFCxbY7XZBEF5++eXolCHnPPqIwQYfSfE7TwghhBDVZW9gB+D6\n669/9tlnn3zyyZ/+9KcvvfTSJZdcYrfbh5xjMpnsdrvb7f7xj388yvRbEsxms81m83g83d3d\nRUVFo5xZXl5+ww033HDDDYFA4B//+MdPf/rTG264YfXq1UajcciZjY2Nr7/+usPhUBLaBvP5\nfM8///yjjz4aDewAXHXVVU899dQLL7ywfPlypf4jug6byovfddddAF577bWzzz47enBwXmBe\nXp4oih6PR5KkaB6eMv7of2v3nSeEEEJIcrJ3KRaAsl758ssvv/zyy36/f3jZhEJpqzakvRyA\nnp6eFAegZKGtW7du8MH77rtv5cqVH3/8MYBjx461trZGPzKZTDfeeOPixYt7e3uPHDky/IaP\nPvqoJEnXXXfdP4Z57rnnZsyYsX379sFNXs4999yioqK1a9f6/f61a9fOmDFDGVIqLx4MBpub\nm/Py8gZHdZzzt956K/qlKIqTJ0+WJEmp2I0afE7SAyCEEEKIRrI6sBME4brrrtu+ffuaNWsm\nT5480p6q119/PYA777yzs7MzevDDDz8sLS29/PLLlS+V1mvd3d0JDeDaa68F8MADD0RT344e\nPfqHP/xh8+bNM2fO/Oyzz2pra7/zne+EQqHoJR6P58iRI6IolpSUDLlbOBx+/PHHAfzgBz8Y\n5UUGt0fW6XSXX355Y2Pjgw8+6PP5vvOd7yT64sMZjcaCggKv1xudfuOc33XXXUqtQ29vr3Lw\nvPPOA/DQQw9FL9y6deu//vWv1AdACCGEEK1kstfKMNE+dtEjR48eVXLdfvvb30YPDuljxzlX\ncu8qKytvvvnmO+6449JLL9Xr9TabbcuWLcoJhw4dYozp9frvf//7N954I+f8vvvuA/CHP/xh\n8ACG9LGTJOmiiy4CUFNTc+ONN15zzTXRPiPKCUrh6pQpU3784x/ffvvtP/rRj5Tygp/97GfD\n307p+rZkyZKRXr+jo8NgMFit1t7e3ujBDz/8EIDNZmOM1dfXD7lkzBeP+Zo333wzgGnTpt19\n99133333woULp0+f/vbbbwMoLCy8//77Gxsb6+vrlYXvr33ta7fffvu1115rs9l+//vfY1Af\nu3gGQAghhJC0yfbAjnO+atUqQRCOHTsWPTI8sJMk6bHHHlM2ttLpdJMmTfrud7+7d+/ewfe5\n//77i
  256. "text/plain": [
  257. "plot without title"
  258. ]
  259. },
  260. "metadata": {
  261. "image/png": {
  262. "height": 420,
  263. "width": 420
  264. },
  265. "text/plain": {
  266. "height": 420,
  267. "width": 420
  268. }
  269. },
  270. "output_type": "display_data"
  271. }
  272. ],
  273. "source": [
  274. "data %>% group_by(ymd) %>%\n",
  275. " dplyr::summarise(stress_a = mean(stress), \n",
  276. " fatigue_a = mean(fatigue), \n",
  277. " productivity_a = mean(productivity)) %>%\n",
  278. " gather(key,value, stress_a, fatigue_a, productivity_a) %>%\n",
  279. " ggplot(mapping=aes(x = ymd)) + \n",
  280. " ggtitle(\"Metrics Average\") +\n",
  281. " geom_line(mapping=aes(y = value, colour = key)) +\n",
  282. " labs(x=\"School Week\", y=\"Average (1-10)\") +\n",
  283. " scale_colour_discrete(name=\"Metrics\",\n",
  284. " breaks=c(\"stress_a\", \"fatigue_a\", \"productivity_a\"),\n",
  285. " labels=c(\"Stress\", \"Fatigue\", \"Productivity\")) + \n",
  286. " theme_bw()\n",
  287. "ggsave(file=\"weeklyLineGraphMetrics.png\", width=8, height=4, dpi=300)"
  288. ]
  289. },
  290. {
  291. "cell_type": "code",
  292. "execution_count": 9,
  293. "metadata": {},
  294. "outputs": [
  295. {
  296. "data": {
  297. "image/png": "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\ni//4x
  298. "text/plain": [
  299. "plot without title"
  300. ]
  301. },
  302. "metadata": {
  303. "image/png": {
  304. "height": 420,
  305. "width": 420
  306. },
  307. "text/plain": {
  308. "height": 420,
  309. "width": 420
  310. }
  311. },
  312. "output_type": "display_data"
  313. }
  314. ],
  315. "source": [
  316. "data %>% \n",
  317. " group_by(date) %>%\n",
  318. " gather(key,value, class, club, hw, work_total, total_hours) %>%\n",
  319. " ggplot(mapping=aes(x = date)) + \n",
  320. " ggtitle(\"Hourly Breakdowns\") +\n",
  321. " geom_boxplot(mapping=aes(y = value, colour = key)) +\n",
  322. " labs(y=\"Hours\") +\n",
  323. " scale_colour_discrete(name=\"Categories\",\n",
  324. " breaks=c(\"total_hours\", \"hw\", \"work_total\", \"class\", \"club\"),\n",
  325. " labels=c(\"Total Hours\", \"HW\", \"Work\", \"Class\", \"Club\")) + \n",
  326. " theme_bw() +\n",
  327. " theme(axis.title.x=element_blank(),\n",
  328. " axis.text.x=element_blank(),\n",
  329. " axis.ticks.x=element_blank())\n",
  330. "ggsave(file=\"hourlyBoxPlots.png\", width=6, height=4, dpi=300)"
  331. ]
  332. },
  333. {
  334. "cell_type": "code",
  335. "execution_count": 10,
  336. "metadata": {},
  337. "outputs": [
  338. {
  339. "data": {
  340. "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAIAAAByhViMAAAACXBIWXMAABJ0AAASdAHeZh94\nAAAgAElEQVR4nOzdd3wU1f7/8TO7STabZJMQWoAgJSBFSaT3IhC4FA1RhIgKSDERC1w1CqLS\nRPxqBCyAAhekXHNBkCpcpTdBmhQFRMRgaEKA9LZlfn/M1/3uL40k7LLJ4fV88EfmzJmZzywn\nyTtTFVVVBQAAACo+nbsLAAAAgHMQ7AAAACRBsAMAAJAEwQ4AAEASBDsAAABJEOwAAAAkQbAD\nAACQBMHOacaPH68oyueff+7uQu6Gt956S1GUzz77rFRLHTt2TFGUbt26uaYoAADudfIEOy00\nKIoyYMCAovps3LhR6/PWW2+VauXLli1bv3598X0qVapUp04dk8lUqjWXin0f7fR6faVKldq0\naTNp0qSbN2+6btMAAKD883B3AU6mKMq333577dq1atWqFZy7ZMkSRVHK8LKN119/vV+/fo8+\n+mgxfd5444033nijtGsuAz8/v379+mlfm83mq1evHjp06NChQ0uXLj106FCVKlXuQg0AAKAc\nkueInSY8PNxisSxfvrzgrFu3bm3YsOGBBx4o7TrPnz9/9epVZ1TnHNWrV//P31avXr1v374L\nFy40btw4MTFx/vz57q4OAAC4jWzBrmXLllWrVl28eHHBWf/5z39yc3MjIiLytauqunDhwvbt\n25tMJqPR2KRJk7fffjszM1ObO3DgwNDQUCHEv/71L0VROnXqJISYOHGioijr16+fO3durVq1\nAgMDRWHX2Nlstrlz57Zu3drPz89kMvXo0WP37t2Om161alX37t2DgoK8vLxq1qzZp0+fzZs3\nl2Gva9So8dRTTwkhEhMT7Y2FFnnb/dWkpaVNmDChSZMmRqPRYDA0bNgwLi4uLS2tmBpu3rzZ\nqFEjvV7/9ddfay0XLlyIjo6uUqWKj4/PQw89tGjRooJLmc3mjz/+uHXr1iaTydvbu0GDBi++\n+OLly5e1ubVq1TIajXl5efb+hw4d0s5BX7p0yd54/fp1nU7XunVrIcTbb7+t7fUvv/wSFRVV\nrVo1b2/vhx56KCEhwXG7zvrkAQAoV2QLdqqqPv744z///PPhw4fzzfryyy+rV6/evn37fO1D\nhw4dPXr0hQsXYmJiXnnllcDAwHfffbdTp07p6elCiGeffXb48OFCiHbt2s2aNWvs2LFCCC8v\nLyHErl274uLiunbtOmjQoEKLGTx48AsvvJCVlTVs2LDIyMiDBw927dp12bJl2twFCxY88cQT\nP//886BBg8aPH9+nT5+DBw/269fP3qFU/vzzTyGE4/HIooosfn+FEGazuX///u+//76vr++L\nL774/PPP6/X6+Pj4nj17Wq3WQreem5sbGRl59uzZOXPmPPHEE0KIW7dude7cecWKFQ888MCr\nr77arl27iRMnfvLJJ45L2Wy2yMjIcePGZWRkjBw58vXXX7///vvnzJnTqlWrCxcuCCEiIiJy\ncnIOHjxoX2THjh32/bI37ty5U1XV3r172/f6p59+6tixY1ZW1tNPP92zZ8/jx48PGTJk+/bt\nrvjkAQAoR1RZ/PTTT0KIYcOGaTlgzJgxjnNPnz4thHjllVe040kTJ07U2lesWCGEaNmyZVpa\nmtZis9lefPFFIcT48eO1Fm2RkSNH2tf23nvvCSECAgK+++47e6N2gd28efO0Se0QUZ8+fSwW\ni9Zy5swZHx8fX1/f9PR0VVWbNWsmhDh37px9DUlJSSaTqV27dsXvY2hoqL3FarVevHjxvffe\n0+v1TZs2zcjIKL7Ikuzv6tWrhRDt2rWzV56bm9u4cWMhxPr167WWiRMnCiE+/fRTbQ1aapwy\nZYp9Q++8844QYvDgwfaWK1euBAcHCyG6du2qtWgnjtu3b5+Tk2Pvpt3XMmjQIFVVtVPq06dP\nt8/t3bt3+/bt69Sp89xzz9kbx4wZI4TYvXu3qqozZswQQnh5eS1btsze4bXXXtPGhjZZhk8e\nAIAKQbYjdkKI1q1bN2vWLCEhITc31964ZMkSIcSIESPydV6wYIEQYsaMGfa7WRVFmTZtmqen\np7ZIoRRFEUI0adKkV69eRfXRTge/+eaber1ea2nUqNH06dNjY2OvXbsmhEhJSVEUxdfX175I\nSEhIcnLy/v37i9/B33//3fGu2JCQkHfeeWfcuHH79+93XFuhRZZkf1u0aPHNN998+umn9sq9\nvLwiIyOFECdOnChYz+uvv75y5coXX3xRC3OadevWCSHGjRtnbwkODn7++ecdF9S2+PbbbxsM\nBntjXFycl5fX2rVrs7Oze/bsqSiK/fy12Wzeu3dv+/btW7Vq5XjEbseOHSaTyfFYbOvWrZ9+\n+mn7pHYQ8ezZs9pkmT95AADKOQmDnRBi5MiRt27dWrNmjTZps9mWL1/epk2bgndOHDhwQAjR\noUMHx8bAwMAHH3zwypUr2vnNohQ8q+to3759QoiWLVs6No4bNy4+Pr5+/fpCiEceeURV1Ycf\nfnjRokX2mzO0M4nFM5lMw/42dOjQvn37BgcHz5o168knn7RfnVZUkSXZ37p160ZFRbVq1UoI\nkZ6efvXq1atXr/r4+AghsrOz861/7ty58fHx0dHRjqdZbTabdog0PDzcsXPbtm3tX6uqeuTI\nkYLF+Pv7N2rUKC8v75dffqlevXpYWNgPP/ygnQI+ePBgZmZmhw4dunTp8uuvv/71119CiGvX\nrp0+fbpHjx4eHv93i3e7du0c11mpUiXH4sv8yQMAUM7J9rgTzdNPP/3GG28sXrw4OjpaCLF1\n69aLFy9qZw8dZWdnZ2RkCCH8/PwKXc+lS5fuu+++orZStWrVomZlZmZmZmZ6e3sbjcai+sye\nPdtqtS5atGjkyJFCiKZNm/bv3z82NrZevXrF7pyoVq3al19+6dhitVo/++yzcePGRUREHDt2\nzNPTs9AiS76/a9eujY+PP3LkSE5OTjGVbNq06fvvvxdCPP7449oBQk1GRkZeXl7B3a9cubJj\nn5ycHC8vr4CAgHyr1WpOTk4WQkRERMTHx//000+tWrXasWOHoihdu3ZNSkoSQuzatWvQoEE7\nd+4UQmgX2Nlp53zttNrUvx9zU+ZPHgCAck7OYFe5cuXIyMhVq1YlJSXVrl17yZIlRqPxySef\nzNdN+32vKIrjOURH+fJBPo75KR+dTieEMJvNqqo6Jp58i3/++eeTJk1av3795s2bt2/f/sEH\nH8yePXvZsmVF3Y1RFL1eP3bs2M2bN3/33XcbN26MiooqtMgS7u/8+fNjYmJMJlNsbGybNm0C\nAgJ0Ot3atWu/+OKLfP03b97cokWLkydPxsTEtGvXLiQkRGvXIpRa4HmBjvde5Atbjmw2m72D\nFux2797dqlWr7du3P/DAA1WqVAkKCvL399eC3Y4dO4QQxZwTL8iJnzwAAOWKnMFOCDFy5MiV\nK1cuW7bspZdeWrNmzWOPPVbwyJC3t3dAQEBqauoLL7xQzOG3MjAajSaTKT09/caNG8U/MbhG\njRoxMTExMTE5OTlffvnlSy+9FBMTExkZ6XjZWQlpZ3jPnDlTVIcS7u/UqVOFEBs3buzSpYu9\nsdDrz/r3779q1arZs2ePHz/+6aef3r59u5Zo/fz89Hp9bm5udna240E7x8cB+vn5+fj4ZGVl\npaSk2B/Forl+/br4+7hdly5dvL29d+/e/cILL+zfv3/UqFFCCJ1O16FDB+0yu507dzZs2FDb\n91Jx4icPAEA5Iec1dkKInj173nfffWvXrtUuwy9424RGu+or3+PlhBB3/nou7Rq1rVu3OjbO\nmDGjZ8+eP/zwgxDiwoULV65csc/y9vaOjY3t0KFDSkrK+fPny7BF7eYA7Xqyotx2f3Nzcy9d\nuuTn5+eY6lRV/e9//1twbb179zYYDHFxcd27d9+1a9f06dO1dr1e37BhQ1HgZou9e/c6Tmof\nkXYxo
  341. "text/plain": [
  342. "plot without title"
  343. ]
  344. },
  345. "metadata": {
  346. "image/png": {
  347. "height": 420,
  348. "width": 420
  349. },
  350. "text/plain": {
  351. "height": 420,
  352. "width": 420
  353. }
  354. },
  355. "output_type": "display_data"
  356. }
  357. ],
  358. "source": [
  359. "data %>% \n",
  360. " group_by(date) %>%\n",
  361. " gather(key,value, stress, fatigue, productivity) %>%\n",
  362. " ggplot(mapping=aes(x = date)) + \n",
  363. " ggtitle(\"Metrics Breakdowns\") +\n",
  364. " geom_boxplot(mapping=aes(y = value, colour = key)) +\n",
  365. " labs(y=\"Metric\") +\n",
  366. " scale_colour_discrete(name=\"Metrics\",\n",
  367. " breaks=c(\"stress\", \"fatigue\", \"productivity\"),\n",
  368. " labels=c(\"Stress\", \"Fatigue\", \"Productivity\")) + \n",
  369. " theme_bw() +\n",
  370. " theme(axis.title.x=element_blank(),\n",
  371. " axis.text.x=element_blank(),\n",
  372. " axis.ticks.x=element_blank())\n",
  373. "ggsave(file=\"metricsBoxPlots.png\", width=6, height=4, dpi=300)"
  374. ]
  375. },
  376. {
  377. "cell_type": "code",
  378. "execution_count": 11,
  379. "metadata": {},
  380. "outputs": [
  381. {
  382. "name": "stderr",
  383. "output_type": "stream",
  384. "text": [
  385. "Loading required package: PerformanceAnalytics\n",
  386. "\n",
  387. "Loading required package: xts\n",
  388. "\n",
  389. "Loading required package: zoo\n",
  390. "\n",
  391. "\n",
  392. "Attaching package: ‘zoo’\n",
  393. "\n",
  394. "\n",
  395. "The following objects are masked from ‘package:base’:\n",
  396. "\n",
  397. " as.Date, as.Date.numeric\n",
  398. "\n",
  399. "\n",
  400. "\n",
  401. "Attaching package: ‘xts’\n",
  402. "\n",
  403. "\n",
  404. "The following objects are masked from ‘package:dplyr’:\n",
  405. "\n",
  406. " first, last\n",
  407. "\n",
  408. "\n",
  409. "\n",
  410. "Attaching package: ‘PerformanceAnalytics’\n",
  411. "\n",
  412. "\n",
  413. "The following object is masked from ‘package:graphics’:\n",
  414. "\n",
  415. " legend\n",
  416. "\n",
  417. "\n",
  418. "Loading required package: quantmod\n",
  419. "\n",
  420. "Loading required package: TTR\n",
  421. "\n",
  422. "Registered S3 method overwritten by 'quantmod':\n",
  423. " method from\n",
  424. " as.zoo.data.frame zoo \n",
  425. "\n",
  426. "Version 0.4-0 included new data defaults. See ?getSymbols.\n",
  427. "\n",
  428. "\u001b[30m══\u001b[39m \u001b[30mNeed to Learn tidyquant?\u001b[39m \u001b[30m════════════════════════════════════════════════════\u001b[39m\u001b[34m\n",
  429. "Business Science offers a 1-hour course - Learning Lab #9: Performance Analysis & Portfolio Optimization with tidyquant!\n",
  430. "\u001b[39m\u001b[34m</> Learn more at: https://university.business-science.io/p/learning-labs-pro </>\u001b[39m\n",
  431. "\n",
  432. "Loading required package: lattice\n",
  433. "\n",
  434. "Loading required package: grid\n",
  435. "\n",
  436. "Loading required package: chron\n",
  437. "\n",
  438. "NOTE: The default cutoff when expanding a 2-digit year\n",
  439. "to a 4-digit year will change from 30 to 69 by Aug 2020\n",
  440. "(as for Date and POSIXct in base R.)\n",
  441. "\n",
  442. "\n",
  443. "Attaching package: ‘chron’\n",
  444. "\n",
  445. "\n",
  446. "The following objects are masked from ‘package:lubridate’:\n",
  447. "\n",
  448. " days, hours, minutes, seconds, years\n",
  449. "\n",
  450. "\n"
  451. ]
  452. },
  453. {
  454. "data": {
  455. "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAIAAAByhViMAAAACXBIWXMAABJ0AAASdAHeZh94\nAAAgAElEQVR4nOzdZ3wVZf7//+u0VEiDBALphS4iRWBBAWkqKohgAcsKWHbXXtbF8kBYlZ/r\nsqisuuuKuooVRKTYUBABBUFgzUKkpEIS0stJOX3+N0bnmz9krnOAkITZ1/PBjcPkk5nrzJnk\nvDNn5vqYFEURAAAAOPeZ23sAAAAAaB0EOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAw\nCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIId\nAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACA\nQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDs\nAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAA\nDIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJg\nBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAA\nYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAE\nOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAA\nAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg\n2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEA\nABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgE\nwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4A\nAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAg\nCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYA\nAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAG\nQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbAD\nAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAw\nCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIId\nAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACA\nQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDs\nAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAA\nDIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJg\nBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAA\nYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAE\nOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAA\nAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg\n2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEA\nABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgE\nwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4A\nAMAgCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAg\nCHYAAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYA\nAAAGQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAG\nQbADAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbAD\nAAAwCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAw\nCIIdAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIId\nAACAQRDsAAAADIJgBwAAYBAEOwAAAIMg2AEAABgEwQ4AAMAgCHYAAAAGQbADAAAwCIIdAACA\nQRDsAAAADIJgBwAAYBAEOwAAAIMg2AFCCLFq1SqTyWQymUJCQtplAGvWrFEHYLVa22UAaGMr\nV64cMmRIaGhoWFhYenp6U1NTGw+gxWO+3X8QAJwhgh3OSR6PZ8WKFdddd11aWlpERERQUFBc\nXNzYsWOfffbZ8vLy9h5dR/faa6+ZflVTU3NywYQJE9SvXnrppW0/vBM0H63JZFq+fPnJNf/+\n97+b17z22mttP85TsnPnzmuvvXbPnj0Oh6OpqSk3N9fr9bZYecLTN5lMZrM5Ojq6b9++N998\n84cffuh2u9t48Kfk3DrYAAPg3ADOPXv27LnuuuuOHDnSfGF5efmWLVu2bNmyePHil19+edas\nWe01PASitLS0Z8+eXq83Ozu7T58+gX/jmjVr5s6de8LCtWvXturozro33nhDfRAZGfnkk092\n6dIlODg4wO9VFKWmpqampubnn39+++23k5KS3nzzzXHjxp3qGAYNGrR06VIhBCeJASPh5xnn\nmD179lx00UWNjY3qf0NCQvr372+z2Q4fPlxZWSmEqK2tnT17ts1mmzlzZruOFDIffvih3jkq\nua+++qqhoSE8PFxb4nQ6v/zyy9YbWlsoLCxUH1x//fX33XdfgN91+eWX22w2n89XVVW1b9++\nhoYGdVUTJkz46KOPpk2bdkpjyMjICHzTAM4VfBSLc4nX6501a5aa6kwm05NPPllRUbF79+7v\nv/++oqJizZo1PXv2VCvvv/9+p9PZroOFzAcffHCq35KQkCCEcDgcX3zxRfPlmzZtqq+vF0Jo\nr37H53K51AedOnUK/LveeeedNWvWrF27dtu2bZWVlcuWLQsNDRVC+Hy+2bNnFxUVnZWxAjin\nEOxwLlmzZs3BgwfVx4sWLVqwYEHzMzdTp07dvHmz+lZns9n27NmjLlcU5f333588eXJcXJzN\nZouIiBg+fPiyZcsCPGN08ODBO++8MzMzMyQkJCIiYtiwYS+++KLH49EKXn/9dfUioYsvvlgI\nsXXr1okTJ0ZHR3fq1Omiiy766quvTl7nm2++OXTo0PDw8JiYmClTpuzevdtkMrW49UAGrw1g\nzJgxH
  456. "text/plain": [
  457. "plot without title"
  458. ]
  459. },
  460. "metadata": {
  461. "image/png": {
  462. "height": 420,
  463. "width": 420
  464. },
  465. "text/plain": {
  466. "height": 420,
  467. "width": 420
  468. }
  469. },
  470. "output_type": "display_data"
  471. }
  472. ],
  473. "source": [
  474. "# install tidyquant \n",
  475. "\n",
  476. "#install.packages('tidyquant', repos = \"http://cran.us.r-project.org\")\n",
  477. "#library(tidyquant)\n",
  478. "\n",
  479. "\n",
  480. "library(tidyquant) \n",
  481. "source(\"https://raw.githubusercontent.com/iascchen/VisHealth/master/R/calendarHeat.R\")\n",
  482. "\n",
  483. "\n",
  484. "r2g <- c(\"#D61818\", \"#FFAE63\", \"#FFFFBD\", \"#B5E384\") \n",
  485. "calendarHeat(data$date, data$total_hours, ncolors = 99, color = \"g2r\", varname=\"Daily Hours\")\n",
  486. "ggsave(file=\"calendarHeatMap.png\", width=8, height=4, dpi=300)"
  487. ]
  488. }
  489. ],
  490. "metadata": {
  491. "kernelspec": {
  492. "display_name": "R",
  493. "language": "R",
  494. "name": "ir"
  495. },
  496. "language_info": {
  497. "codemirror_mode": "r",
  498. "file_extension": ".r",
  499. "mimetype": "text/x-r-source",
  500. "name": "R",
  501. "pygments_lexer": "r",
  502. "version": "3.6.2"
  503. }
  504. },
  505. "nbformat": 4,
  506. "nbformat_minor": 4
  507. }