Created
July 16, 2020 13:14
-
-
Save PatrickRWright/05c50833cd9d0d9c5e69fae7476194bd to your computer and use it in GitHub Desktop.
Created on Skills Network Labs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Factors in R\n", | |
"Take care when handling factors because you may end up shuffling your data if you do not.\n", | |
"In the following a few examples will demonstrate this." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<style>\n", | |
".list-inline {list-style: none; margin:0; padding: 0}\n", | |
".list-inline>li {display: inline-block}\n", | |
".list-inline>li:not(:last-child)::after {content: \"\\00b7\"; padding: 0 .5ex}\n", | |
"</style>\n", | |
"<ol class=list-inline><li>'a'</li><li>'a'</li><li>'a'</li><li>'b'</li><li>'c'</li><li>'b'</li><li>'c'</li></ol>\n" | |
], | |
"text/latex": [ | |
"\\begin{enumerate*}\n", | |
"\\item 'a'\n", | |
"\\item 'a'\n", | |
"\\item 'a'\n", | |
"\\item 'b'\n", | |
"\\item 'c'\n", | |
"\\item 'b'\n", | |
"\\item 'c'\n", | |
"\\end{enumerate*}\n" | |
], | |
"text/markdown": [ | |
"1. 'a'\n", | |
"2. 'a'\n", | |
"3. 'a'\n", | |
"4. 'b'\n", | |
"5. 'c'\n", | |
"6. 'b'\n", | |
"7. 'c'\n", | |
"\n", | |
"\n" | |
], | |
"text/plain": [ | |
"[1] \"a\" \"a\" \"a\" \"b\" \"c\" \"b\" \"c\"" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# create some letters\n", | |
"letters <- c(\"a\", \"a\", \"a\", \"b\", \"c\", \"b\", \"c\")\n", | |
"letters" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<style>\n", | |
".list-inline {list-style: none; margin:0; padding: 0}\n", | |
".list-inline>li {display: inline-block}\n", | |
".list-inline>li:not(:last-child)::after {content: \"\\00b7\"; padding: 0 .5ex}\n", | |
"</style>\n", | |
"<ol class=list-inline><li>a</li><li>a</li><li>a</li><li>b</li><li>c</li><li>b</li><li>c</li></ol>\n", | |
"\n", | |
"<details>\n", | |
"\t<summary style=display:list-item;cursor:pointer>\n", | |
"\t\t<strong>Levels</strong>:\n", | |
"\t</summary>\n", | |
"\t<style>\n", | |
"\t.list-inline {list-style: none; margin:0; padding: 0}\n", | |
"\t.list-inline>li {display: inline-block}\n", | |
"\t.list-inline>li:not(:last-child)::after {content: \"\\00b7\"; padding: 0 .5ex}\n", | |
"\t</style>\n", | |
"\t<ol class=list-inline><li>'a'</li><li>'b'</li><li>'c'</li></ol>\n", | |
"</details>" | |
], | |
"text/latex": [ | |
"\\begin{enumerate*}\n", | |
"\\item a\n", | |
"\\item a\n", | |
"\\item a\n", | |
"\\item b\n", | |
"\\item c\n", | |
"\\item b\n", | |
"\\item c\n", | |
"\\end{enumerate*}\n", | |
"\n", | |
"\\emph{Levels}: \\begin{enumerate*}\n", | |
"\\item 'a'\n", | |
"\\item 'b'\n", | |
"\\item 'c'\n", | |
"\\end{enumerate*}\n" | |
], | |
"text/markdown": [ | |
"1. a\n", | |
"2. a\n", | |
"3. a\n", | |
"4. b\n", | |
"5. c\n", | |
"6. b\n", | |
"7. c\n", | |
"\n", | |
"\n", | |
"\n", | |
"**Levels**: 1. 'a'\n", | |
"2. 'b'\n", | |
"3. 'c'\n", | |
"\n", | |
"\n" | |
], | |
"text/plain": [ | |
"[1] a a a b c b c\n", | |
"Levels: a b c" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# create factors\n", | |
"letters_fct <- as.factor(letters)\n", | |
"letters_fct" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Changing factor levels the wrong way" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<style>\n", | |
".list-inline {list-style: none; margin:0; padding: 0}\n", | |
".list-inline>li {display: inline-block}\n", | |
".list-inline>li:not(:last-child)::after {content: \"\\00b7\"; padding: 0 .5ex}\n", | |
"</style>\n", | |
"<ol class=list-inline><li>B</li><li>B</li><li>B</li><li>C</li><li>A</li><li>C</li><li>A</li></ol>\n", | |
"\n", | |
"<details>\n", | |
"\t<summary style=display:list-item;cursor:pointer>\n", | |
"\t\t<strong>Levels</strong>:\n", | |
"\t</summary>\n", | |
"\t<style>\n", | |
"\t.list-inline {list-style: none; margin:0; padding: 0}\n", | |
"\t.list-inline>li {display: inline-block}\n", | |
"\t.list-inline>li:not(:last-child)::after {content: \"\\00b7\"; padding: 0 .5ex}\n", | |
"\t</style>\n", | |
"\t<ol class=list-inline><li>'B'</li><li>'C'</li><li>'A'</li></ol>\n", | |
"</details>" | |
], | |
"text/latex": [ | |
"\\begin{enumerate*}\n", | |
"\\item B\n", | |
"\\item B\n", | |
"\\item B\n", | |
"\\item C\n", | |
"\\item A\n", | |
"\\item C\n", | |
"\\item A\n", | |
"\\end{enumerate*}\n", | |
"\n", | |
"\\emph{Levels}: \\begin{enumerate*}\n", | |
"\\item 'B'\n", | |
"\\item 'C'\n", | |
"\\item 'A'\n", | |
"\\end{enumerate*}\n" | |
], | |
"text/markdown": [ | |
"1. B\n", | |
"2. B\n", | |
"3. B\n", | |
"4. C\n", | |
"5. A\n", | |
"6. C\n", | |
"7. A\n", | |
"\n", | |
"\n", | |
"\n", | |
"**Levels**: 1. 'B'\n", | |
"2. 'C'\n", | |
"3. 'A'\n", | |
"\n", | |
"\n" | |
], | |
"text/plain": [ | |
"[1] B B B C A C A\n", | |
"Levels: B C A" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# as you can see this changes the data\n", | |
"letters_fct_wrong <- letters_fct\n", | |
"levels(letters_fct_wrong) <- c(\"B\", \"C\", \"A\")\n", | |
"letters_fct_wrong" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Changing factor levels the right way with recode()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<style>\n", | |
".list-inline {list-style: none; margin:0; padding: 0}\n", | |
".list-inline>li {display: inline-block}\n", | |
".list-inline>li:not(:last-child)::after {content: \"\\00b7\"; padding: 0 .5ex}\n", | |
"</style>\n", | |
"<ol class=list-inline><li>A</li><li>A</li><li>A</li><li>B</li><li>C</li><li>B</li><li>C</li></ol>\n", | |
"\n", | |
"<details>\n", | |
"\t<summary style=display:list-item;cursor:pointer>\n", | |
"\t\t<strong>Levels</strong>:\n", | |
"\t</summary>\n", | |
"\t<style>\n", | |
"\t.list-inline {list-style: none; margin:0; padding: 0}\n", | |
"\t.list-inline>li {display: inline-block}\n", | |
"\t.list-inline>li:not(:last-child)::after {content: \"\\00b7\"; padding: 0 .5ex}\n", | |
"\t</style>\n", | |
"\t<ol class=list-inline><li>'A'</li><li>'B'</li><li>'C'</li></ol>\n", | |
"</details>" | |
], | |
"text/latex": [ | |
"\\begin{enumerate*}\n", | |
"\\item A\n", | |
"\\item A\n", | |
"\\item A\n", | |
"\\item B\n", | |
"\\item C\n", | |
"\\item B\n", | |
"\\item C\n", | |
"\\end{enumerate*}\n", | |
"\n", | |
"\\emph{Levels}: \\begin{enumerate*}\n", | |
"\\item 'A'\n", | |
"\\item 'B'\n", | |
"\\item 'C'\n", | |
"\\end{enumerate*}\n" | |
], | |
"text/markdown": [ | |
"1. A\n", | |
"2. A\n", | |
"3. A\n", | |
"4. B\n", | |
"5. C\n", | |
"6. B\n", | |
"7. C\n", | |
"\n", | |
"\n", | |
"\n", | |
"**Levels**: 1. 'A'\n", | |
"2. 'B'\n", | |
"3. 'C'\n", | |
"\n", | |
"\n" | |
], | |
"text/plain": [ | |
"[1] A A A B C B C\n", | |
"Levels: A B C" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"library(dplyr)\n", | |
"letters_fct_right <- letters_fct\n", | |
"letters_fct_right <- recode(letters_fct_right,\n", | |
" \"b\" = \"B\",\n", | |
" \"c\" = \"C\",\n", | |
" \"a\" = \"A\")\n", | |
"letters_fct_right" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Sanity check" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<table>\n", | |
"<caption>A matrix: 3 × 7 of type chr</caption>\n", | |
"<tbody>\n", | |
"\t<tr><td>a</td><td>a</td><td>a</td><td>b</td><td>c</td><td>b</td><td>c</td></tr>\n", | |
"\t<tr><td>A</td><td>A</td><td>A</td><td>B</td><td>C</td><td>B</td><td>C</td></tr>\n", | |
"\t<tr><td>B</td><td>B</td><td>B</td><td>C</td><td>A</td><td>C</td><td>A</td></tr>\n", | |
"</tbody>\n", | |
"</table>\n" | |
], | |
"text/latex": [ | |
"A matrix: 3 × 7 of type chr\n", | |
"\\begin{tabular}{lllllll}\n", | |
"\t a & a & a & b & c & b & c\\\\\n", | |
"\t A & A & A & B & C & B & C\\\\\n", | |
"\t B & B & B & C & A & C & A\\\\\n", | |
"\\end{tabular}\n" | |
], | |
"text/markdown": [ | |
"\n", | |
"A matrix: 3 × 7 of type chr\n", | |
"\n", | |
"| a | a | a | b | c | b | c |\n", | |
"| A | A | A | B | C | B | C |\n", | |
"| B | B | B | C | A | C | A |\n", | |
"\n" | |
], | |
"text/plain": [ | |
" [,1] [,2] [,3] [,4] [,5] [,6] [,7]\n", | |
"[1,] a a a b c b c \n", | |
"[2,] A A A B C B C \n", | |
"[3,] B B B C A C A " | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# quick alignment as sanity check\n", | |
"rbind(as.character(letters_fct),\n", | |
" as.character(letters_fct_right),\n", | |
" as.character(letters_fct_wrong))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Sorting long lists of factors numerically" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Assume you have a set of factors which represent month and year (e.g. \"2014-3\", \"1987-12\"). Lets have a look what happens if you use such data without explicitly sorting it manually." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# create categories\n", | |
"years <- 1999:2001\n", | |
"year_month <- as.factor(sapply(years, paste_ym <- function(x) {paste(x, 1:12)}))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"If you look at the levels of the factor you can see that they are not numerically sorted." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<style>\n", | |
".list-inline {list-style: none; margin:0; padding: 0}\n", | |
".list-inline>li {display: inline-block}\n", | |
".list-inline>li:not(:last-child)::after {content: \"\\00b7\"; padding: 0 .5ex}\n", | |
"</style>\n", | |
"<ol class=list-inline><li>'1999 1'</li><li>'1999 10'</li><li>'1999 11'</li><li>'1999 12'</li><li>'1999 2'</li><li>'1999 3'</li><li>'1999 4'</li><li>'1999 5'</li><li>'1999 6'</li><li>'1999 7'</li><li>'1999 8'</li><li>'1999 9'</li><li>'2000 1'</li><li>'2000 10'</li><li>'2000 11'</li><li>'2000 12'</li><li>'2000 2'</li><li>'2000 3'</li><li>'2000 4'</li><li>'2000 5'</li><li>'2000 6'</li><li>'2000 7'</li><li>'2000 8'</li><li>'2000 9'</li><li>'2001 1'</li><li>'2001 10'</li><li>'2001 11'</li><li>'2001 12'</li><li>'2001 2'</li><li>'2001 3'</li><li>'2001 4'</li><li>'2001 5'</li><li>'2001 6'</li><li>'2001 7'</li><li>'2001 8'</li><li>'2001 9'</li></ol>\n" | |
], | |
"text/latex": [ | |
"\\begin{enumerate*}\n", | |
"\\item '1999 1'\n", | |
"\\item '1999 10'\n", | |
"\\item '1999 11'\n", | |
"\\item '1999 12'\n", | |
"\\item '1999 2'\n", | |
"\\item '1999 3'\n", | |
"\\item '1999 4'\n", | |
"\\item '1999 5'\n", | |
"\\item '1999 6'\n", | |
"\\item '1999 7'\n", | |
"\\item '1999 8'\n", | |
"\\item '1999 9'\n", | |
"\\item '2000 1'\n", | |
"\\item '2000 10'\n", | |
"\\item '2000 11'\n", | |
"\\item '2000 12'\n", | |
"\\item '2000 2'\n", | |
"\\item '2000 3'\n", | |
"\\item '2000 4'\n", | |
"\\item '2000 5'\n", | |
"\\item '2000 6'\n", | |
"\\item '2000 7'\n", | |
"\\item '2000 8'\n", | |
"\\item '2000 9'\n", | |
"\\item '2001 1'\n", | |
"\\item '2001 10'\n", | |
"\\item '2001 11'\n", | |
"\\item '2001 12'\n", | |
"\\item '2001 2'\n", | |
"\\item '2001 3'\n", | |
"\\item '2001 4'\n", | |
"\\item '2001 5'\n", | |
"\\item '2001 6'\n", | |
"\\item '2001 7'\n", | |
"\\item '2001 8'\n", | |
"\\item '2001 9'\n", | |
"\\end{enumerate*}\n" | |
], | |
"text/markdown": [ | |
"1. '1999 1'\n", | |
"2. '1999 10'\n", | |
"3. '1999 11'\n", | |
"4. '1999 12'\n", | |
"5. '1999 2'\n", | |
"6. '1999 3'\n", | |
"7. '1999 4'\n", | |
"8. '1999 5'\n", | |
"9. '1999 6'\n", | |
"10. '1999 7'\n", | |
"11. '1999 8'\n", | |
"12. '1999 9'\n", | |
"13. '2000 1'\n", | |
"14. '2000 10'\n", | |
"15. '2000 11'\n", | |
"16. '2000 12'\n", | |
"17. '2000 2'\n", | |
"18. '2000 3'\n", | |
"19. '2000 4'\n", | |
"20. '2000 5'\n", | |
"21. '2000 6'\n", | |
"22. '2000 7'\n", | |
"23. '2000 8'\n", | |
"24. '2000 9'\n", | |
"25. '2001 1'\n", | |
"26. '2001 10'\n", | |
"27. '2001 11'\n", | |
"28. '2001 12'\n", | |
"29. '2001 2'\n", | |
"30. '2001 3'\n", | |
"31. '2001 4'\n", | |
"32. '2001 5'\n", | |
"33. '2001 6'\n", | |
"34. '2001 7'\n", | |
"35. '2001 8'\n", | |
"36. '2001 9'\n", | |
"\n", | |
"\n" | |
], | |
"text/plain": [ | |
" [1] \"1999 1\" \"1999 10\" \"1999 11\" \"1999 12\" \"1999 2\" \"1999 3\" \"1999 4\" \n", | |
" [8] \"1999 5\" \"1999 6\" \"1999 7\" \"1999 8\" \"1999 9\" \"2000 1\" \"2000 10\"\n", | |
"[15] \"2000 11\" \"2000 12\" \"2000 2\" \"2000 3\" \"2000 4\" \"2000 5\" \"2000 6\" \n", | |
"[22] \"2000 7\" \"2000 8\" \"2000 9\" \"2001 1\" \"2001 10\" \"2001 11\" \"2001 12\"\n", | |
"[29] \"2001 2\" \"2001 3\" \"2001 4\" \"2001 5\" \"2001 6\" \"2001 7\" \"2001 8\" \n", | |
"[36] \"2001 9\" " | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"levels(year_month)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"To illustrate why this may cause problems I will briefly create a small symmetric dataset for plotting. For every year and month we will have a combination of two categories (yes/no) and percentages thereof." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<table>\n", | |
"<caption>A data.frame: 72 × 3</caption>\n", | |
"<thead>\n", | |
"\t<tr><th scope=col>year_month</th><th scope=col>frac</th><th scope=col>answer</th></tr>\n", | |
"\t<tr><th scope=col><fct></th><th scope=col><dbl></th><th scope=col><fct></th></tr>\n", | |
"</thead>\n", | |
"<tbody>\n", | |
"\t<tr><td>1999 1 </td><td>0.00000000</td><td>yes</td></tr>\n", | |
"\t<tr><td>1999 2 </td><td>0.02857143</td><td>yes</td></tr>\n", | |
"\t<tr><td>1999 3 </td><td>0.05714286</td><td>yes</td></tr>\n", | |
"\t<tr><td>1999 4 </td><td>0.08571429</td><td>yes</td></tr>\n", | |
"\t<tr><td>1999 5 </td><td>0.11428571</td><td>yes</td></tr>\n", | |
"\t<tr><td>1999 6 </td><td>0.14285714</td><td>yes</td></tr>\n", | |
"\t<tr><td>1999 7 </td><td>0.17142857</td><td>yes</td></tr>\n", | |
"\t<tr><td>1999 8 </td><td>0.20000000</td><td>yes</td></tr>\n", | |
"\t<tr><td>1999 9 </td><td>0.22857143</td><td>yes</td></tr>\n", | |
"\t<tr><td>1999 10</td><td>0.25714286</td><td>yes</td></tr>\n", | |
"\t<tr><td>1999 11</td><td>0.28571429</td><td>yes</td></tr>\n", | |
"\t<tr><td>1999 12</td><td>0.31428571</td><td>yes</td></tr>\n", | |
"\t<tr><td>2000 1 </td><td>0.34285714</td><td>yes</td></tr>\n", | |
"\t<tr><td>2000 2 </td><td>0.37142857</td><td>yes</td></tr>\n", | |
"\t<tr><td>2000 3 </td><td>0.40000000</td><td>yes</td></tr>\n", | |
"\t<tr><td>2000 4 </td><td>0.42857143</td><td>yes</td></tr>\n", | |
"\t<tr><td>2000 5 </td><td>0.45714286</td><td>yes</td></tr>\n", | |
"\t<tr><td>2000 6 </td><td>0.48571429</td><td>yes</td></tr>\n", | |
"\t<tr><td>2000 7 </td><td>0.51428571</td><td>yes</td></tr>\n", | |
"\t<tr><td>2000 8 </td><td>0.54285714</td><td>yes</td></tr>\n", | |
"\t<tr><td>2000 9 </td><td>0.57142857</td><td>yes</td></tr>\n", | |
"\t<tr><td>2000 10</td><td>0.60000000</td><td>yes</td></tr>\n", | |
"\t<tr><td>2000 11</td><td>0.62857143</td><td>yes</td></tr>\n", | |
"\t<tr><td>2000 12</td><td>0.65714286</td><td>yes</td></tr>\n", | |
"\t<tr><td>2001 1 </td><td>0.68571429</td><td>yes</td></tr>\n", | |
"\t<tr><td>2001 2 </td><td>0.71428571</td><td>yes</td></tr>\n", | |
"\t<tr><td>2001 3 </td><td>0.74285714</td><td>yes</td></tr>\n", | |
"\t<tr><td>2001 4 </td><td>0.77142857</td><td>yes</td></tr>\n", | |
"\t<tr><td>2001 5 </td><td>0.80000000</td><td>yes</td></tr>\n", | |
"\t<tr><td>2001 6 </td><td>0.82857143</td><td>yes</td></tr>\n", | |
"\t<tr><td>⋮</td><td>⋮</td><td>⋮</td></tr>\n", | |
"\t<tr><td>1999 7 </td><td>0.82857143</td><td>no</td></tr>\n", | |
"\t<tr><td>1999 8 </td><td>0.80000000</td><td>no</td></tr>\n", | |
"\t<tr><td>1999 9 </td><td>0.77142857</td><td>no</td></tr>\n", | |
"\t<tr><td>1999 10</td><td>0.74285714</td><td>no</td></tr>\n", | |
"\t<tr><td>1999 11</td><td>0.71428571</td><td>no</td></tr>\n", | |
"\t<tr><td>1999 12</td><td>0.68571429</td><td>no</td></tr>\n", | |
"\t<tr><td>2000 1 </td><td>0.65714286</td><td>no</td></tr>\n", | |
"\t<tr><td>2000 2 </td><td>0.62857143</td><td>no</td></tr>\n", | |
"\t<tr><td>2000 3 </td><td>0.60000000</td><td>no</td></tr>\n", | |
"\t<tr><td>2000 4 </td><td>0.57142857</td><td>no</td></tr>\n", | |
"\t<tr><td>2000 5 </td><td>0.54285714</td><td>no</td></tr>\n", | |
"\t<tr><td>2000 6 </td><td>0.51428571</td><td>no</td></tr>\n", | |
"\t<tr><td>2000 7 </td><td>0.48571429</td><td>no</td></tr>\n", | |
"\t<tr><td>2000 8 </td><td>0.45714286</td><td>no</td></tr>\n", | |
"\t<tr><td>2000 9 </td><td>0.42857143</td><td>no</td></tr>\n", | |
"\t<tr><td>2000 10</td><td>0.40000000</td><td>no</td></tr>\n", | |
"\t<tr><td>2000 11</td><td>0.37142857</td><td>no</td></tr>\n", | |
"\t<tr><td>2000 12</td><td>0.34285714</td><td>no</td></tr>\n", | |
"\t<tr><td>2001 1 </td><td>0.31428571</td><td>no</td></tr>\n", | |
"\t<tr><td>2001 2 </td><td>0.28571429</td><td>no</td></tr>\n", | |
"\t<tr><td>2001 3 </td><td>0.25714286</td><td>no</td></tr>\n", | |
"\t<tr><td>2001 4 </td><td>0.22857143</td><td>no</td></tr>\n", | |
"\t<tr><td>2001 5 </td><td>0.20000000</td><td>no</td></tr>\n", | |
"\t<tr><td>2001 6 </td><td>0.17142857</td><td>no</td></tr>\n", | |
"\t<tr><td>2001 7 </td><td>0.14285714</td><td>no</td></tr>\n", | |
"\t<tr><td>2001 8 </td><td>0.11428571</td><td>no</td></tr>\n", | |
"\t<tr><td>2001 9 </td><td>0.08571429</td><td>no</td></tr>\n", | |
"\t<tr><td>2001 10</td><td>0.05714286</td><td>no</td></tr>\n", | |
"\t<tr><td>2001 11</td><td>0.02857143</td><td>no</td></tr>\n", | |
"\t<tr><td>2001 12</td><td>0.00000000</td><td>no</td></tr>\n", | |
"</tbody>\n", | |
"</table>\n" | |
], | |
"text/latex": [ | |
"A data.frame: 72 × 3\n", | |
"\\begin{tabular}{lll}\n", | |
" year\\_month & frac & answer\\\\\n", | |
" <fct> & <dbl> & <fct>\\\\\n", | |
"\\hline\n", | |
"\t 1999 1 & 0.00000000 & yes\\\\\n", | |
"\t 1999 2 & 0.02857143 & yes\\\\\n", | |
"\t 1999 3 & 0.05714286 & yes\\\\\n", | |
"\t 1999 4 & 0.08571429 & yes\\\\\n", | |
"\t 1999 5 & 0.11428571 & yes\\\\\n", | |
"\t 1999 6 & 0.14285714 & yes\\\\\n", | |
"\t 1999 7 & 0.17142857 & yes\\\\\n", | |
"\t 1999 8 & 0.20000000 & yes\\\\\n", | |
"\t 1999 9 & 0.22857143 & yes\\\\\n", | |
"\t 1999 10 & 0.25714286 & yes\\\\\n", | |
"\t 1999 11 & 0.28571429 & yes\\\\\n", | |
"\t 1999 12 & 0.31428571 & yes\\\\\n", | |
"\t 2000 1 & 0.34285714 & yes\\\\\n", | |
"\t 2000 2 & 0.37142857 & yes\\\\\n", | |
"\t 2000 3 & 0.40000000 & yes\\\\\n", | |
"\t 2000 4 & 0.42857143 & yes\\\\\n", | |
"\t 2000 5 & 0.45714286 & yes\\\\\n", | |
"\t 2000 6 & 0.48571429 & yes\\\\\n", | |
"\t 2000 7 & 0.51428571 & yes\\\\\n", | |
"\t 2000 8 & 0.54285714 & yes\\\\\n", | |
"\t 2000 9 & 0.57142857 & yes\\\\\n", | |
"\t 2000 10 & 0.60000000 & yes\\\\\n", | |
"\t 2000 11 & 0.62857143 & yes\\\\\n", | |
"\t 2000 12 & 0.65714286 & yes\\\\\n", | |
"\t 2001 1 & 0.68571429 & yes\\\\\n", | |
"\t 2001 2 & 0.71428571 & yes\\\\\n", | |
"\t 2001 3 & 0.74285714 & yes\\\\\n", | |
"\t 2001 4 & 0.77142857 & yes\\\\\n", | |
"\t 2001 5 & 0.80000000 & yes\\\\\n", | |
"\t 2001 6 & 0.82857143 & yes\\\\\n", | |
"\t ⋮ & ⋮ & ⋮\\\\\n", | |
"\t 1999 7 & 0.82857143 & no\\\\\n", | |
"\t 1999 8 & 0.80000000 & no\\\\\n", | |
"\t 1999 9 & 0.77142857 & no\\\\\n", | |
"\t 1999 10 & 0.74285714 & no\\\\\n", | |
"\t 1999 11 & 0.71428571 & no\\\\\n", | |
"\t 1999 12 & 0.68571429 & no\\\\\n", | |
"\t 2000 1 & 0.65714286 & no\\\\\n", | |
"\t 2000 2 & 0.62857143 & no\\\\\n", | |
"\t 2000 3 & 0.60000000 & no\\\\\n", | |
"\t 2000 4 & 0.57142857 & no\\\\\n", | |
"\t 2000 5 & 0.54285714 & no\\\\\n", | |
"\t 2000 6 & 0.51428571 & no\\\\\n", | |
"\t 2000 7 & 0.48571429 & no\\\\\n", | |
"\t 2000 8 & 0.45714286 & no\\\\\n", | |
"\t 2000 9 & 0.42857143 & no\\\\\n", | |
"\t 2000 10 & 0.40000000 & no\\\\\n", | |
"\t 2000 11 & 0.37142857 & no\\\\\n", | |
"\t 2000 12 & 0.34285714 & no\\\\\n", | |
"\t 2001 1 & 0.31428571 & no\\\\\n", | |
"\t 2001 2 & 0.28571429 & no\\\\\n", | |
"\t 2001 3 & 0.25714286 & no\\\\\n", | |
"\t 2001 4 & 0.22857143 & no\\\\\n", | |
"\t 2001 5 & 0.20000000 & no\\\\\n", | |
"\t 2001 6 & 0.17142857 & no\\\\\n", | |
"\t 2001 7 & 0.14285714 & no\\\\\n", | |
"\t 2001 8 & 0.11428571 & no\\\\\n", | |
"\t 2001 9 & 0.08571429 & no\\\\\n", | |
"\t 2001 10 & 0.05714286 & no\\\\\n", | |
"\t 2001 11 & 0.02857143 & no\\\\\n", | |
"\t 2001 12 & 0.00000000 & no\\\\\n", | |
"\\end{tabular}\n" | |
], | |
"text/markdown": [ | |
"\n", | |
"A data.frame: 72 × 3\n", | |
"\n", | |
"| year_month <fct> | frac <dbl> | answer <fct> |\n", | |
"|---|---|---|\n", | |
"| 1999 1 | 0.00000000 | yes |\n", | |
"| 1999 2 | 0.02857143 | yes |\n", | |
"| 1999 3 | 0.05714286 | yes |\n", | |
"| 1999 4 | 0.08571429 | yes |\n", | |
"| 1999 5 | 0.11428571 | yes |\n", | |
"| 1999 6 | 0.14285714 | yes |\n", | |
"| 1999 7 | 0.17142857 | yes |\n", | |
"| 1999 8 | 0.20000000 | yes |\n", | |
"| 1999 9 | 0.22857143 | yes |\n", | |
"| 1999 10 | 0.25714286 | yes |\n", | |
"| 1999 11 | 0.28571429 | yes |\n", | |
"| 1999 12 | 0.31428571 | yes |\n", | |
"| 2000 1 | 0.34285714 | yes |\n", | |
"| 2000 2 | 0.37142857 | yes |\n", | |
"| 2000 3 | 0.40000000 | yes |\n", | |
"| 2000 4 | 0.42857143 | yes |\n", | |
"| 2000 5 | 0.45714286 | yes |\n", | |
"| 2000 6 | 0.48571429 | yes |\n", | |
"| 2000 7 | 0.51428571 | yes |\n", | |
"| 2000 8 | 0.54285714 | yes |\n", | |
"| 2000 9 | 0.57142857 | yes |\n", | |
"| 2000 10 | 0.60000000 | yes |\n", | |
"| 2000 11 | 0.62857143 | yes |\n", | |
"| 2000 12 | 0.65714286 | yes |\n", | |
"| 2001 1 | 0.68571429 | yes |\n", | |
"| 2001 2 | 0.71428571 | yes |\n", | |
"| 2001 3 | 0.74285714 | yes |\n", | |
"| 2001 4 | 0.77142857 | yes |\n", | |
"| 2001 5 | 0.80000000 | yes |\n", | |
"| 2001 6 | 0.82857143 | yes |\n", | |
"| ⋮ | ⋮ | ⋮ |\n", | |
"| 1999 7 | 0.82857143 | no |\n", | |
"| 1999 8 | 0.80000000 | no |\n", | |
"| 1999 9 | 0.77142857 | no |\n", | |
"| 1999 10 | 0.74285714 | no |\n", | |
"| 1999 11 | 0.71428571 | no |\n", | |
"| 1999 12 | 0.68571429 | no |\n", | |
"| 2000 1 | 0.65714286 | no |\n", | |
"| 2000 2 | 0.62857143 | no |\n", | |
"| 2000 3 | 0.60000000 | no |\n", | |
"| 2000 4 | 0.57142857 | no |\n", | |
"| 2000 5 | 0.54285714 | no |\n", | |
"| 2000 6 | 0.51428571 | no |\n", | |
"| 2000 7 | 0.48571429 | no |\n", | |
"| 2000 8 | 0.45714286 | no |\n", | |
"| 2000 9 | 0.42857143 | no |\n", | |
"| 2000 10 | 0.40000000 | no |\n", | |
"| 2000 11 | 0.37142857 | no |\n", | |
"| 2000 12 | 0.34285714 | no |\n", | |
"| 2001 1 | 0.31428571 | no |\n", | |
"| 2001 2 | 0.28571429 | no |\n", | |
"| 2001 3 | 0.25714286 | no |\n", | |
"| 2001 4 | 0.22857143 | no |\n", | |
"| 2001 5 | 0.20000000 | no |\n", | |
"| 2001 6 | 0.17142857 | no |\n", | |
"| 2001 7 | 0.14285714 | no |\n", | |
"| 2001 8 | 0.11428571 | no |\n", | |
"| 2001 9 | 0.08571429 | no |\n", | |
"| 2001 10 | 0.05714286 | no |\n", | |
"| 2001 11 | 0.02857143 | no |\n", | |
"| 2001 12 | 0.00000000 | no |\n", | |
"\n" | |
], | |
"text/plain": [ | |
" year_month frac answer\n", | |
"1 1999 1 0.00000000 yes \n", | |
"2 1999 2 0.02857143 yes \n", | |
"3 1999 3 0.05714286 yes \n", | |
"4 1999 4 0.08571429 yes \n", | |
"5 1999 5 0.11428571 yes \n", | |
"6 1999 6 0.14285714 yes \n", | |
"7 1999 7 0.17142857 yes \n", | |
"8 1999 8 0.20000000 yes \n", | |
"9 1999 9 0.22857143 yes \n", | |
"10 1999 10 0.25714286 yes \n", | |
"11 1999 11 0.28571429 yes \n", | |
"12 1999 12 0.31428571 yes \n", | |
"13 2000 1 0.34285714 yes \n", | |
"14 2000 2 0.37142857 yes \n", | |
"15 2000 3 0.40000000 yes \n", | |
"16 2000 4 0.42857143 yes \n", | |
"17 2000 5 0.45714286 yes \n", | |
"18 2000 6 0.48571429 yes \n", | |
"19 2000 7 0.51428571 yes \n", | |
"20 2000 8 0.54285714 yes \n", | |
"21 2000 9 0.57142857 yes \n", | |
"22 2000 10 0.60000000 yes \n", | |
"23 2000 11 0.62857143 yes \n", | |
"24 2000 12 0.65714286 yes \n", | |
"25 2001 1 0.68571429 yes \n", | |
"26 2001 2 0.71428571 yes \n", | |
"27 2001 3 0.74285714 yes \n", | |
"28 2001 4 0.77142857 yes \n", | |
"29 2001 5 0.80000000 yes \n", | |
"30 2001 6 0.82857143 yes \n", | |
"⋮ ⋮ ⋮ ⋮ \n", | |
"43 1999 7 0.82857143 no \n", | |
"44 1999 8 0.80000000 no \n", | |
"45 1999 9 0.77142857 no \n", | |
"46 1999 10 0.74285714 no \n", | |
"47 1999 11 0.71428571 no \n", | |
"48 1999 12 0.68571429 no \n", | |
"49 2000 1 0.65714286 no \n", | |
"50 2000 2 0.62857143 no \n", | |
"51 2000 3 0.60000000 no \n", | |
"52 2000 4 0.57142857 no \n", | |
"53 2000 5 0.54285714 no \n", | |
"54 2000 6 0.51428571 no \n", | |
"55 2000 7 0.48571429 no \n", | |
"56 2000 8 0.45714286 no \n", | |
"57 2000 9 0.42857143 no \n", | |
"58 2000 10 0.40000000 no \n", | |
"59 2000 11 0.37142857 no \n", | |
"60 2000 12 0.34285714 no \n", | |
"61 2001 1 0.31428571 no \n", | |
"62 2001 2 0.28571429 no \n", | |
"63 2001 3 0.25714286 no \n", | |
"64 2001 4 0.22857143 no \n", | |
"65 2001 5 0.20000000 no \n", | |
"66 2001 6 0.17142857 no \n", | |
"67 2001 7 0.14285714 no \n", | |
"68 2001 8 0.11428571 no \n", | |
"69 2001 9 0.08571429 no \n", | |
"70 2001 10 0.05714286 no \n", | |
"71 2001 11 0.02857143 no \n", | |
"72 2001 12 0.00000000 no " | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"frac <- seq(0, 1, by = 1/35)\n", | |
"yes <- data.frame(year_month, frac)\n", | |
"yes$answer <- \"yes\"\n", | |
"no <- yes\n", | |
"no$frac <- 1 - no$frac\n", | |
"no$answer <- \"no\"\n", | |
"plot_data <- rbind(yes, no)\n", | |
"plot_data$answer <- as.factor(plot_data$answer)\n", | |
"plot_data" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"As you can see below, the sorting of the years/months is not numerical. i.e. you would likely prefer 1, 2, 3, 4 ... 12 for the months." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": {}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAC+lBMVEUAAAAAv8QBAQECAgID\nAwMEBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERETExMUFBQVFRUW\nFhYXFxcYGBgZGRkbGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJycoKCgp\nKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6Ojo7\nOzs8PDw9PT0/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlLS0tMTExNTU1OTk5P\nT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19gYGBh\nYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29wcHBxcXFycnJz\nc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGCgoKDg4OEhISF\nhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWWlpaX\nl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqanp6eoqKip\nqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5ubm6urq7\nu7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vMzMzN\nzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f\n39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx\n8fHy8vLz8/P09PT19fX29vb39/f4dm34+Pj5+fn6+vr7+/v8/Pz9/f3+/v7///96urZkAAAA\nCXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO2dC5hdVX23D2AJF2MvFnvj4+KtUpSvDmrV\nr9av1mo9JhDTNJFQKBKU2mAKokItWDFEgU8BURpB2yZcbARKxVg6JkJIjBDRJOgQwEBAaOSW\n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\nvggiIVKlptQXQSREqtSU+iKIhEiVmlJfBJEQqVJT6osgEiJVakp9EURCpEpNqS/SPiK57R6R\nKjalvggiIVKlptQXQSREqtSU+iKIhEiVmlJfBJEQqVJT6osgEiJVakp9EURCpEpNqS+CSIhU\nqSn1RRAJkSo1pb4IIiFSpabUF0EkRKrUlPoiiIRIlZpSXwSREKlSU+qLIBIiVWpKfRFEQqRK\nTakvgkiIVKkp9UUQCZEqNaW+CCIhUqWm1BdBJESq1JT6IrGKVJQ2iFSxKfVFEAmRKjWlvggi\nIVKlptQXQSREqtSU+iKIhEiVmlJfBJEQqVJT6osgEiJVakp9EURCpEpNqS+CSIhUqSn1RRAJ\nkSo1pb4IIiFSpabUF0EkRKrUlPoiiIRIlZpSXwSREKlSU+qLIBIiVWpKfRFEQqRKTakvgkiI\nVKkp9UUQCZEqNaW+CCIhUqWm1BeJQiT5VQVqg0gVm1JfBJEQqVJT6osgEiJVakp9EURCpEpN\nqS+CSIhUqSn1RRAJkSo1pb4IIiFSpabUF0EkRKrUlPoiiBSDSGvmnnrmTUMjD+bV07x/t7qr\ncWft2LMQKSBBpAhE2jDl+k3Lpi0aefT0xiRzPqPUXbPSez1jT0OkgASRIhBp/rnJzeLpvePk\nsfqaRKTZzU9DpIAEkSIQafYNyU1XvWucXP2h5IXeXVNnz/z4ynGISAEJIrW+SEP125LbzfVx\nZ7qnfSu5XXf3hvXX1u9MwU8/keTh3l75rbMhe6yI06aLItWqKGfSjthU1ERy3ZkN6d3HOHtM\nbpHuOHXb6N0Fp6e3yzuS3K+U/NbZkD1WxGnTRZFqVZQzaUdsKmoiue7MhgRI3pd2Q3OuGvvc\nnfX+5Hb300me37JFfutsyB4r4rTpoki1KsqZtCM2FTWRXHdmQ7b4kWV/yftmw4MTTpcWjL/j\nwDlSQMI5kiStd47UePt7efr298oLd6WPP/t3DfzlZV1rr6nfPvY0RApIECkCkdQDc085Y/FQ\n+jpue/LouSlLG3ThnGkzL1gx/ixECkgQKQaR7IJIAUkLiqRroxNEMgSRAhJEkgSR2npKfRFE\nkgSR2npKfRFEkgSR2npKfRFEkgSR2npKfRFEkgSR2npKfRFEkgSR2npKfRFEkgSR2npKfRFE\nkgSR2npKfRFEkgSR2npKfRFEkgSR2npKfRFEkgSR2npKfRFEkgSR2npKfRFEkgSR2npKfRFE\nkgSR2npKfRFEkgSR2npKfRFEkgSR2npKfRFEkgSR2npKfRFEkgSR2npKfZHgImUTRLIMIgUk\niCQJIrX1lPoiiCQJIrX1lPoiiCQJIrX1lPoiiCQJIrX1lPoiiCQJIrX1lPoiiCQJIrX1lPoi\niCQJIrX1lPoiiCQJIrX1lPoiiCQJIrX1lPoiiCQJIrX1lPoiiCQJIrX1lPoiiCQJIrX1lPoi\niCQJIrX1lPoiiCQJIrX1lPoiiCQJIrX1lPoiiCQJIrX1lPoiiCQJIrX1lPoiiCQJIrX1lPoi\nzhXLm21EsgwiBSSIJAkitdGUlkcQSRJEaqMpLY8gkiSI1EZTWh5BJEkQqY2mtDyCSJIgUhtN\naXkEkSRBpDaa0vIIIkmCSG00peURRJIEkdpoSssjiCQJIrXRlJZHEEkSRGqjKS2PIJIkiNRG\nU1oeQSRJEKmNprQ8gkiSIFIbTWl5BJEkQaQ2mtLyCCJJgkhtNKXlEUSSBJHaaErLI4gkCSK1\n0ZSWRxBJEkRq6ymNoKIvgkiWQSSN6Ic3goq+CCJZBpE0oh/eCCr6IohkGUTSiH54I6joiyCS\nZRBJI/rhjaCiL4JIlkEkjeiHN4KKvggiWQaRNKIf3ggq+iKIZBlE0oh+eCOo6IsgkmUQSSP6\n4Y2goi+CSJZBJI3ohzeCir4IIlkGkTSiH94IKvoiiGQZRNKIfngjqOiLIJJlEEkj+uGNoKIv\ngkiWQSSN6Ic3goq+CCJZBpE0oh/eCCr6IohkGUTSiH54I6joiyCSZRBJI/rhjaCiL4JIlkEk\njeiHN4KKvggiWQaRNKIf3ggq+iKIZJnKi2RzeANXdCtdDEEkyyCSxeENXNGtdDEEkSzTNzAg\nj5MN2WNFnDZdFLGsKA+miQSu6Fa6GHKQgXjc/UAxU50n/ImUQfgTqQjCn0iWQSSLwxu4olvp\nYggiWQaRLA5v4IpupYshiGQZRLI4vIErupUuhiCSZRDJ4vAGruhWuhiCSJZBJIvDG7iiW+li\nCCJZBpEsDm/gim6liyGIZBlEsji8gSu6lS6GIJJlEMni8Aau6Fa6GIJIlkEki8MbuKJb6WII\nIlkGkSwOb+CKbqWLIYhkGUSyOLyBK7qVLoYgkmUQyeLwBq7oVroYgkiWQSSLwxu4olvpYggi\nWQaRLA5v4IpupYshiGQZRLI4vIErupUuhiCSZaolkuNQlFlRJ4jkNYiUQRCpCIJIlkEkC1Jm\n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\n+f/P17QnF9EkIgAAAABJRU5ErkJggg==", | |
"text/plain": [ | |
"plot without title" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data", | |
"source": "R display func" | |
} | |
], | |
"source": [ | |
"library(tidyverse)\n", | |
"library(ggplot2)\n", | |
"\n", | |
"plot_data %>%\n", | |
" ggplot(aes(x = year_month, y = frac, fill = answer)) +\n", | |
" geom_bar(position = \"stack\", stat = \"identity\") +\n", | |
" theme(axis.text.x = element_text(angle = 90))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"So now lets reorder these factor levels to plot in the expected numerical order. For this you can use `str_sort()` function from the `stringr` package." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"library(stringr)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<style>\n", | |
".list-inline {list-style: none; margin:0; padding: 0}\n", | |
".list-inline>li {display: inline-block}\n", | |
".list-inline>li:not(:last-child)::after {content: \"\\00b7\"; padding: 0 .5ex}\n", | |
"</style>\n", | |
"<ol class=list-inline><li>'1999 1'</li><li>'1999 2'</li><li>'1999 3'</li><li>'1999 4'</li><li>'1999 5'</li><li>'1999 6'</li><li>'1999 7'</li><li>'1999 8'</li><li>'1999 9'</li><li>'1999 10'</li><li>'1999 11'</li><li>'1999 12'</li><li>'2000 1'</li><li>'2000 2'</li><li>'2000 3'</li><li>'2000 4'</li><li>'2000 5'</li><li>'2000 6'</li><li>'2000 7'</li><li>'2000 8'</li><li>'2000 9'</li><li>'2000 10'</li><li>'2000 11'</li><li>'2000 12'</li><li>'2001 1'</li><li>'2001 2'</li><li>'2001 3'</li><li>'2001 4'</li><li>'2001 5'</li><li>'2001 6'</li><li>'2001 7'</li><li>'2001 8'</li><li>'2001 9'</li><li>'2001 10'</li><li>'2001 11'</li><li>'2001 12'</li></ol>\n" | |
], | |
"text/latex": [ | |
"\\begin{enumerate*}\n", | |
"\\item '1999 1'\n", | |
"\\item '1999 2'\n", | |
"\\item '1999 3'\n", | |
"\\item '1999 4'\n", | |
"\\item '1999 5'\n", | |
"\\item '1999 6'\n", | |
"\\item '1999 7'\n", | |
"\\item '1999 8'\n", | |
"\\item '1999 9'\n", | |
"\\item '1999 10'\n", | |
"\\item '1999 11'\n", | |
"\\item '1999 12'\n", | |
"\\item '2000 1'\n", | |
"\\item '2000 2'\n", | |
"\\item '2000 3'\n", | |
"\\item '2000 4'\n", | |
"\\item '2000 5'\n", | |
"\\item '2000 6'\n", | |
"\\item '2000 7'\n", | |
"\\item '2000 8'\n", | |
"\\item '2000 9'\n", | |
"\\item '2000 10'\n", | |
"\\item '2000 11'\n", | |
"\\item '2000 12'\n", | |
"\\item '2001 1'\n", | |
"\\item '2001 2'\n", | |
"\\item '2001 3'\n", | |
"\\item '2001 4'\n", | |
"\\item '2001 5'\n", | |
"\\item '2001 6'\n", | |
"\\item '2001 7'\n", | |
"\\item '2001 8'\n", | |
"\\item '2001 9'\n", | |
"\\item '2001 10'\n", | |
"\\item '2001 11'\n", | |
"\\item '2001 12'\n", | |
"\\end{enumerate*}\n" | |
], | |
"text/markdown": [ | |
"1. '1999 1'\n", | |
"2. '1999 2'\n", | |
"3. '1999 3'\n", | |
"4. '1999 4'\n", | |
"5. '1999 5'\n", | |
"6. '1999 6'\n", | |
"7. '1999 7'\n", | |
"8. '1999 8'\n", | |
"9. '1999 9'\n", | |
"10. '1999 10'\n", | |
"11. '1999 11'\n", | |
"12. '1999 12'\n", | |
"13. '2000 1'\n", | |
"14. '2000 2'\n", | |
"15. '2000 3'\n", | |
"16. '2000 4'\n", | |
"17. '2000 5'\n", | |
"18. '2000 6'\n", | |
"19. '2000 7'\n", | |
"20. '2000 8'\n", | |
"21. '2000 9'\n", | |
"22. '2000 10'\n", | |
"23. '2000 11'\n", | |
"24. '2000 12'\n", | |
"25. '2001 1'\n", | |
"26. '2001 2'\n", | |
"27. '2001 3'\n", | |
"28. '2001 4'\n", | |
"29. '2001 5'\n", | |
"30. '2001 6'\n", | |
"31. '2001 7'\n", | |
"32. '2001 8'\n", | |
"33. '2001 9'\n", | |
"34. '2001 10'\n", | |
"35. '2001 11'\n", | |
"36. '2001 12'\n", | |
"\n", | |
"\n" | |
], | |
"text/plain": [ | |
" [1] \"1999 1\" \"1999 2\" \"1999 3\" \"1999 4\" \"1999 5\" \"1999 6\" \"1999 7\" \n", | |
" [8] \"1999 8\" \"1999 9\" \"1999 10\" \"1999 11\" \"1999 12\" \"2000 1\" \"2000 2\" \n", | |
"[15] \"2000 3\" \"2000 4\" \"2000 5\" \"2000 6\" \"2000 7\" \"2000 8\" \"2000 9\" \n", | |
"[22] \"2000 10\" \"2000 11\" \"2000 12\" \"2001 1\" \"2001 2\" \"2001 3\" \"2001 4\" \n", | |
"[29] \"2001 5\" \"2001 6\" \"2001 7\" \"2001 8\" \"2001 9\" \"2001 10\" \"2001 11\"\n", | |
"[36] \"2001 12\"" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plot_data$year_month <- factor(plot_data$year_month,\n", | |
" str_sort(levels(plot_data$year_month), numeric = TRUE))\n", | |
"levels(plot_data$year_month)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Because the input dataset in symmetric we expect a symmetric plot which is exactly what we get after ordering." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": {}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAC+lBMVEUAAAAAv8QBAQECAgID\nAwMEBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERETExMUFBQVFRUW\nFhYXFxcYGBgZGRkbGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJycoKCgp\nKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6Ojo7\nOzs8PDw9PT0/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlLS0tMTExNTU1OTk5P\nT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19gYGBh\nYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29wcHBxcXFycnJz\nc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGCgoKDg4OEhISF\nhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWWlpaX\nl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqanp6eoqKip\nqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5ubm6urq7\nu7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vMzMzN\nzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f\n39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx\n8fHy8vLz8/P09PT19fX29vb39/f4dm34+Pj5+fn6+vr7+/v8/Pz9/f3+/v7///96urZkAAAA\nCXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO2dC7wcZX33N2AJF7EXi73xcvFWKcpbD2rV\nt9a31mpdE4hpmkgoFAlKbTAFUaEWrBiiwKuAKI2gbRMuNgKlYiw9JkJIjBDRJOghgIGA0Mgt\n9+Tk5Nyez+ed2XPd/zw588yTmfnPs/v9fT7s5Xt2Z3+z8//m7M7sWWqGEHLAqWkXIKQVgkiE\n5BBEIiSHIBIhOQSRCMkhiERIDkEkQnIIIhGSQ3ISaceWkewb2CLSM7BNkD0DOwTZNbBTkJ0D\nuwXZPtAtyNaBHvlg/b2S9PVLsm9gqyDdiYq7LRV3CbIjUXGbpeK+9Iq9iYo9lorbUyvutFTc\nk6iYeM6SFfv6EhWdNmuyostmlRUtm3UguVkTFcdPXj5TnSU5ibTt+ZH0mudFeswWQfaMu/1Q\ndpkdgmw3uwTZaroFedHskw822CdJ/6AkveYFQboTFXcnKu40OxMVdwuyJVHxBdObqNgvSV+i\n4j5Lxa2JitsF2ZGouM3sSVTskQ+WrDgwkKho2awvCrInUTG5WXdYNqusaNmsJrlZExXHb9Z8\npjpLECkOIjUHkTIHkeIgUnMQKXMQKQ4iNQeRMgeR4iBScxApcxApDiI1B5EyB5HiIFJzEClz\nECkOIjUHkTIHkeIgUnMQKXMQKQ4iNQeRMgeR4iBScxApcxApDiI1B5EyB5HiIFJzEClzECkO\nIjUHkTIHkeIgUnMQKXMQKQ4iNQeRMgeR4iBScxApcxApDiI1B5EyB5HiIFJzEClzECkOIjUH\nkTIHkeIgUnMQKXMQKQ4iNQeRMgeR4iBScxApcxApDiI1B5EyB5HiIFJzEClzECkOIjUHkTIH\nkeIgUnMQKXPSRHpk/ln1a8aurpl76pk3DY6/MBREagSRmoNIo1n3jXvmjIm0Ycr1m5ZNWzTu\nwnAQqRFEag4ijc/cMZHmnxudLJ7eM3ZhOIjUCCI1B5HGZ5xIs2+ITrrqXWMXhoNIjSBScxBp\nfMZEGqzfFp1urq8cvRCdPnNblCd3jqTf7BTpM7sF2Wf2CNJjugXpNvsE2W16Bdll+uSDmQFJ\nBgYl6Te7BOl1qtgjyB6niv3y4QeTFS3PmUvF5HPmUjH5nCUrWp4zl4oumzVZMbfNOu72pefA\nRVreEeV+Y/aKuJC9TsRr0XkRKuZBCi00SaQwWSbKgb+0G/mNJFfQhex1Il6LzotQMQ9SaCEp\nUvV/I024s0GuoAvZ60S8Fp0XoWIepNBCUqRKvkfat3Hjh+dvfNyYlRfuHtrrvXxk9/fy5t3f\neT2/SVK5EUgSKk5MEGljPc4UY+6sb4+uPjD3lDMWD46/MBREUiSBVmwvkRyDSIok0IqIZAki\nKZJAKyKSJYikSAKtiEiWIJIiCbQiIlmCSIok0IqIZAkiKZJAKyKSJYikSAKtiEiWIJIiCbQi\nIlmCSIok0IqIZAkiKZJAKyKSJYikSAKtiEiWIJIiCbQiIlmCSIok0IqIZAkiKZJAKyKSJYik\nSAKtiEiWIJIiCbRibtogUqgjkCRUnJggkmMQSZEEWhGRLEEkRRJoRUSyBJEUSaAVEckSRFIk\ngVZEJEsQSZEEWhGRLEEkRRJoRUSyBJEUSaAVEckSRFIkgVZEJEsQSZEEWhGRLEEkRRJoRUSy\nBJEUSaAVEckSRFIkgVZEJEsQSZEEWhGRLEEkRRJoRUSyBJEUSaAVEckSRFIkgVZEJEsQSZEE\nWhGRLEEkRRJoxdy0QaRQRyBJqDgxQSTHIJIiCbQiIlmCSIok0IqIZAkiKZJAKyKSJYikSAKt\niEiWIJIiCbQiIlmCSIok0IqIZAkiKZJAKyKSJYikSAKtiEiWIJIiCbQiIlmCSIok0IqIZAki\nKZJAKyKSJYikSAKtiEiWIJIiCbQiIlmCSIok0IqIZAkiKZJAKyKSJYikSAKtiEiWIJIiCbQi\nIlmCSIok0Iq5aYNIoY5AklBxYoJIjkEkRRJoRUSyBJEUSaAVEckSRFIkgVZEJEsQSZEEWhGR\nLEEkRRJoRUSyBJEUSaAVEckSRFIkgVZEJEsQSZEEWhGRLEEkRRJoRUSyBJEUSaAVEckSRFIk\ngVZEJEsQSZEEWhGRLEEkRRJoRUSyBJEUSaAVEckSRFIkgVZEJEsQSZEEWhGRLEEkRRJoRUSy\nBJEUSaAVc9MGkUIdgSSh4sQEkRyDSIok0IqIZAkiKZJAKyKSJYikSAKtiEiWIJIiCbQiIlnS\n3d0tnygXsteJeC06L0LFPIi1kBQgP9Kdz1RnSU4i7dy2TT5RLmSvE/FadF6EinkQayEpQH5k\nWz5TnSW8tEshVMyD8NLOMYikSAKtiEiWIJIiCbQiIlmCSIok0IqIZAkiKZJAKyKSJYikSAKt\niEiWIJIiCbQiIlmCSIok0IqIZAkiKZJAKyKSJYikSAKtiEiWIJIiCbQiIlmCSIokiIpy2nPU\nBpHCGAEXQsWJCSI5BpEUSRAVEckpiKRIgqiISE5BJEUSREVEcgoiKZIgKiKSUxBJkQRREZGc\ngkiKJIiKiOQURFIkQVREJKcgkiIJoiIiOQWRFEkQFRHJKYikSIKoiEhOQSRFEkRFRHIKIimS\nICoiklMQSZEEURGRnIJIiiSIiojkFERSJEFURCSnIJIiCaIiIjkFkRRJEBURySmIpEgqWDGp\nDSI5BZEUSQUrIpJnEEmRVLAiInkGkRRJBSsikmcQSZFUsCIieQaRFEkFKyKSZxBJkVSwIiJ5\nBpEUSQUrIpJnEEmRVLAiInkGkRRJBSsikmcQSZFUsCIieQaRFEkFKyKSZxBJkVSwIiJ5BpEU\nSQUrIpJnEEmRVLAiInkGkRRJBSsikmcQSZFUsCIieQaRFEkFKyKSZxBJkVSwIiJ5BpEUiXrF\n9NlGJMcgkiJRr4hIiJRKqJhOEAmRUgkV0wkiIVIqoWI6QSRESiVUTCeIhEiphIrpBJEQKZVQ\nMZ0gEiKlEiqmE0RCpFRCxXSCSIiUSqiYThAJkVIJFdMJIiFSKqFiOkEkREolVEwniIRIqYSK\n6QSRECmVUDGdIBIipRIqphNEQqRUQsV0gkiIlEqomE4QCZFSCRUl8ZltRHIMIikSREIkpjQH\ngkiIxJTmQBAJkZjSHAgiIRJTmgNBJERiSnMgiIRITGkOBJEQiSnNgSBSCCKtmXvqmTcNDl+Z\nV4/z/j3mrsaFtaO3QiRFgkgBiLRhyvWblk1bNHzt6Y1R5nzGmLtmxZe6R2+GSIoEkQIQaf65\n0cni6T1j5LH6mkik2c03QyRFgkgBiDT7huikq941Rq7+UPRC766ps2d+fOUYRCRFgkjVF2mw\nflt0urk+5szOad+KTtfdvWH9tfU7Y/DTT0R5uKdHPuMuZK8T8Vp0XoSKksi5dSGTLMRrQW6k\nZz/jXGAyi3THqdtGLi44PT5d3hHlfmPkM+5C9joRr0XnRagoiZxbFzLJQrwW5EYUkvWl3eCc\nq0Z/dme9Lzrd83SU57dskc+4C9nrRLwWnRehoiRybl3IJAvxWpAb2VKMLBMl686GB8e9XVow\ntseB90iKhPdIklTvPVJj9/fyePf3ygt3x9c/+3cN/OVlXWuvqd8+ejNEUiSIFIBI5oG5p5yx\neDB+Hbc9uvbclKUNunDOtJkXrBi7FSIpEkQKQSS3IJIiKbRiPrONSI5BJEWCSJIgUptNaT4E\nkSRBpDab0nwIIkmCSG02pfkQRJIEkdpsSvMhiCQJIrXZlOZDEEkSRGqzKc2HIJIkiNRmU5oP\nQSRJEKnNpjQfgkiSIFKbTWk+BJEkQaQ2m9J8CCJJgkhtNqX5EESSBJHabErzIYgkCSK12ZTm\nQxBJEkRqsynNhyCSJIjUZlOaD0EkSRCpzaY0H4JIkiBSm01pPgSRJEGkNpvSfEiOFYuabURy\nDCIpEkSSBJFaekqLIogkCSK19JQWRRBJEkRq6SktiiCSJIjU0lNaFEEkSRCppae0KIJIkiBS\nS09pUQSRJEGklp7SoggiSYJILT2lRRFEkgSRWnpKiyKIJAkitfSUFkUQSRJEaukpLYogkiSI\n1NJTWhRBJEkQqaWntCiCSJIgUktPaVEEkSRBpJae0qIIIkmCSC09pUURRJIEkVp6SosiiCQJ\nIrX0lBZFvCuWN9uI5BhEUiSIJAkitdCUlkcQSRJEaqEpLY8gkiSI1EJTWh5BJEkQqYWmtDyC\nSJIgUgtNaXkEkSRBpBaa0vIIIkmCSC00peURRJIEkVpoSssjiCQJIrXQlJZHEEkSRGqhKS2P\nIJIkiNRCU1oeQSRJEKmFprQ8gkiSIFILTWl5BJEkQaQWmtLyCCJJgkgtNKXlEUSSBJFaaErL\nI4gkCSK10JSWRxBJEkRqoSktjzhWLHOSJUEkxyCSIkEkSRAp2CnVJIgkCSIFO6WaBJEkQaRg\np1STIJIkiBTslGoSRJIEkYKdUk2CSJIgUrBTqkkQSRJECnZKNQkiSYJIwU6pJkEkSRAp2CnV\nJIgkCSIFO6WaBJEkQaRgp1STIJIkiBTslGoSRJIEkYKdUk2CSJIgUrBTqkkQSRJECnZKNQki\nSYJIwU6pJkEkSRAp2CnVJIgkCSIFO6WaxFao1LlNJ4jkGERSJIgkSbgi9fb3y23pQvY6Ea9F\n50UCrZiY2/4EKpNMKrdQfz5TnSX8RkohgVZMzC2/kYoNIqWQQCuWOrfpBJEcg0iKBJEkQaQw\npjRJKlex1LlNJ4jkGERSJIgkCSKFMaVJUrmKpc5tOkEkxyCSIkEkSRApjClNkspVLHVu0wki\nOQaRFAkiSYJIYUxpklSuYqlzm04QyTGIpEgQSRJECmNKk6RyFUud23SCSI5BJEWCSJIgUhhT\nmiSVq1jq3KYTRHIMIikSRJIEkcKY0iSpXMVS5zadIJJjEEmR2LQpdW7TCSI5BpEUCSJJgkhV\nnFIXgkgTE0RyDCIpEkSSBJGqOKUuBJEmJojkGERSJIgkCSJVcUpdCCJNTBDJMYikSBBJEkSq\n4pS6EESamCCSYxBJkSCSJIhUxSl1IYg0MUEkxyCSIkEkSRCpilPqQhBpYoJIjkEkRYJIkiBS\nFafUhSDSxASRHINIigSRJEGkKk6pC0GkiQkiOQaRFAkiSYJIVZxSF4JIExNEcgwilUhcprTU\nuU0niOQYRCqRuExpqXObThDJMYhUInGZ0lLnNp0gkmMQqUTiMqWlzm06QSTHIFKJxGVKS53b\ndIJIjkGkEonLlJY6t+kEkRyDSCUSlyktdW7TCSI5BpFKJC5TWurcphNEcgwilUhcprTUuU0n\niOQYRCqRuExpqXObThDJMYhUInGZ0lLnNp20lEi7bRCRUkgFK7pMaalzm06qJNK2i9/88snH\nnb8zurik9q0Fr5589GWD0eW+z5945JGv+usd5una30dXz67NiU7n1Z6NfnLVSYcd+Y67G7f/\n5qWvOuQTiORBKljRZUpLndt0UiWRHjrqI1+8bsZBfzwYi3H8e767+qzaVyN8QW3Wwhs+/YdP\nG/P7J0VXjzv4+Oj0Da83pv+9B8+49oqTDro5vv2xb//3FasRyYNUsKLLlJY6t+mkSiL19Man\nn6t1xmKcHOk08OrXxea8c+QGf3vQc+bx2um1x81zB33MmOtqX49g7xt/qy+6/Wv69rNUREoh\nFazoMqWlzm06qZJIcXq7u2qfjUW6Or42c/KAMX/42w8M//D22jfNwpc88ZKvmVtr3zbmLa/o\njnNF7UfR7S/f3xIRKYVUsKLLlJY6t+mkUiJ9461H1KLMi0W6PQbn1LYZs+zltf816+vxjoSt\nB59t/vIt5k0zzId+ZYcxv1obztLo9rciEiIpkiqJdFWtfvM9q++qnReLdMeQSFuj0x3//pET\nakdH75HMyccP/ubF5pNHDR73tujaka9ePZStI7dHJA9SwYouU1rq3KaTKol0wnHxTroVCZHi\n3FK7MDr9ZO322nLTGZ1+Orr2xsk7R+6KSP6kghVdprTUuU0nVRLpxGP7jOl/jxTpxfjSE7UP\nRaedtRMO7zHdh51Quye69qXaObF55hlEOhCiXtFvSpMEkYZzae1dC69608lSpEOnzf/XK177\nknuj63sOrb07Ovu/tSP2RWd976u9+XMLP/2uoxDpQIh6Rb8pTRJEGk7fZa+cfPS8J6RIF73t\nNw/53ak/aNzknbUvmHgP+bsb1wau/6MjDzt26iJEOhCiXtFvSpMEkQoNIqUQ9Yp+U5okiFRo\nECmFqFf0m9IkQaRCg0gpRL2i35QmCSIVGkRKIeoV/aY0SRCp0CBSClGv6DelSYJIhQaRUoh6\nRb8pTRJEKjSIlELUK/pNaZIgUqFBpBSiXtFvSpMEkQoNIqUQ9Yp+U5okiFRomkT69B80Pp03\n8LpLsy4GkQojflOaJIhUaJpEOvHvh87nviHrYhCpMOI3pUmCSEPZMVGyzv1YmkR66VeHzr/y\nq1kXg0iFEb8pTRJEGsqOHYnNN5q8RDr880PnCw7PuhhEKoz4TWmSINJQyhDpD/+kcTb4jpOy\nLgaRCiN+U5okiDSUMkS6qvaxncbs/LvalVkXg0iFEb8pTRJEGkoZIvX+ae3wN7z+8Nq7e7Mu\nBpEKI35TmiSINJQyRDK9/6/jyJed/KX9fQne/oNIOZG8pjRJEGkopYjkHUTKieQ1pUmCSENB\nJB2CSHmQdhNp8L8/O++8OFkXg0g5kbymNEkQaShliLTj7SPfzpp1MYiUE8lrSpMEkYaHvASR\n5h08v6t2173vftOmMbZm7qln3jQ4fOWuepy1EiMSIk1MwhNp2l9ecvSv/cUzxgxcduwhx31+\ncP8LtIh07F+Z7tpq03/yBaNow5TrNy2btmhEpFkbo3RLjEiINDEJUKTJn+3e+rZTjbn8iBsf\n/efDvphJpEOuM/tqK4y58phRNP/c6GTx9J5hkWZbMSIh0sQkQJFOjE5uepkZ/LX4+78/8fJM\nIv36l4w57FZjFh46imbfEJ101buGRZo6e+bHVyYwIiHSxCRAkT5g4i8B3/1U/D8kM0tr/5NF\npDd+xJi3TB3s+9NXjpDB+m3R6eb6yqGr6+7esP7a+p1N+L53RvnR4KAs5UL2OhGvRedFSq4o\nh8KFTHIiXovOi5RcaKJ3NK4izWiItPPJ2vcaIm3OItInX9FrvlY7/tjaZfsRqZEFpzfhNadF\nWdfXJ0u5kL1OxGvReZGSK8qhcCGTnIjXovMiJRea6KM5GUXyemm37aHoTc+VJ5x4af8okq/h\notxZ7+OlXVEPL4eCl3Y+JI+XdsMimQVHfD3zzgZL5F6FKAtms7OhsIfPa0qTBJH8RBq47Jhf\nybj7e/cn7k/8PN7PvTzez73ywt3GfHlZ19pr6rePw4iU78PnNaVJgkiZRMqa8SINHrIyeYMH\n5p5yxuLB+AXddmMWzpk284IV4zEi5fvweU1pkiBSaSKZVy7xXQwi5UTymtIkQaShlCHSpW/P\n/pdIQ0GknEheU5okiDSUMkT65rGvufzWO+JkXQwi5UTymtIkQaShlCFSrcanv10KJQkiTUza\nTKQlo8m6GETyIvkMDiJJoilSxzJjFv3SdzGI5EXyGRxEkkRTpFr0W6j2fd/FIJIXyWdwEEkS\nTZF++3JEQqSiSKVEKva7v2cf8u4ZtXfOGE7WxSCSF8lncBBJEk2Rnj/9dw5irx0iFUMqJVKi\nymhy2/3NSztEKoS0mUh/+6jvYhDJi+QzOIgkibZI/kEkL5LP4CCSJIiESB4EkSRBJETyIIgk\nCSIhkgdBJEkQCZE8CCJJgkiI5EEQSRJEQiQPgkiSIBIieRBEkuTARVp0+Nb49NAXjPmX1x96\nzNzoJ/e9/WUv/YPbEAmRFElwIvUcdXV0+scfNOba31y8ceXJ00zvr12w8YnvfA+REEmRBCeS\n+cQJxjxcu8/0vzz+LtQf1375XG3ZRAYgUgpBpDxIeCI9cfB95mMnGvPY8Me4V5ozDvmzy9Yj\nEiJpkvBEMn9xWs/LrzVmQ+27I2T9Fe95yef3t1hESiE5VixqcBBJkjxE+s5hVx+xzZi+3zhn\nHPzU8ftbLCKlEETKgwQo0sDxk8+Kz685+OL1j/zHbLPhkz94+sdvfT8iIZIiCVAkc3ltTeP8\nljcd9rKTLjG/mPK7k3/nr/e7ZERKIYiUBwlRpI92ZDEAkVIIIuVBwhNpS+cRt2QxAJFSCCLl\nQcIT6bVHfDj1/4k0PoiUQhApDxKeSFmDSCkEkfIgiOQYRHIgRQ0OIkmCSIjkQRBJEkRCJA+C\nSJIgEiJ5EESSRPMriw8siORAihocRJIEkRDJgyCSJBOJVFAQKYUgUh4EkRyDSA6kqMFBJEkQ\nCZE8CCJJgkiI5EEQSRJEQiQPgkiSIFILiVTe4CCSJIiESB4EkSRBJETyIIgkCSIhkgdBJEkQ\nCZE8CCJJgkiI5EEQSRJEQiQPgkiSIBIieRBEkgSREMmDIJIkiIRIHgSRJEEkRPIgiCQJIiGS\nB0EkSRAJkTwIIkmCSIjkQRBJEkRCJA+CSJIgEiJ5EESSBJEQyYMgkiSIhEgeBJEkQSRE8iCI\nJAkiBStSmWMiCSJJgkiI5EEQSRJEQiQPgkiSIBIieRBEkgSREMmDIJIkiIRIHgSRJEEkRPIg\niCQJIiGSB0EkSRAJkTwIIkmCSIjkQRBJEkRCJA+CSJIgEiJ5EESSBJEQyYMgkiSIhEgeBJEk\nQSRE8iCIJEm4Iu3YskUOlwvZ60S8Fp0XcawoN2aZZJITqVzFAh9+Sz5TnSU5idTT2yuHy4Xs\ndSJei86LOFaUG7NMMsmJVK5igQ/fm89UZwkv7VIIL+3yILy0cwwilTgmkiCSJIgUhkilDkU6\nQSRJEAmRPAgiSYJIiORBEEkSREIkD4JIkiASInkQRJIEkRDJgyCSJIiESB4EkSRBJETyIIgk\nCSIhkgdBJEkQCZE8CCJJgkiI5EEQSRJEQiQPgkiSIBIieRBEkgSREMmDIJIkiIRIHgSRJEEk\nRPIgiCQJIiGSB0EkSRAJkTwIIkmCSIjkQRBJEkSqokjKQ5FOEEkSREIkD4JIkiASInkQRJIE\nkRDJgyCSJIiESB4EkSRBJETyIIgkCSIhkgdBJEkQCZE8CCJJgkiI5EEQSRJEQiQPgkiSIBIi\neRBEkgSREMmDIJIkiIRIHgSRJEEkRPIgiCQJIiGSB0EkSRAJkTwIIkmCSIjkQRBJEkRCJA+C\nSJIgEiJ5EESSBJH0RXIZgVKHIp0EWhGRLEEkRRJoRUSyBJEUSaAVEckSRFIkgVZEJEsQSZEE\nWhGRLEEkRRJoRUSyBJEUSaAVEckSRFIkgVZEJEsQSZEEWhGRLEEkRRJoRUSyBJEUSaAVEckS\nRFIkgVZEJEsQSZEEWhGRLEEkRRJoRUSyBJEUSaAVEckSRFIkgVZEJEsQSZEEWhGRLEEkRRJo\nRUSyBJEUSaAVEcmSUEXyG4EkqdyUJknlKiKSJYikSAKtiEiWIJIiCbQiIlmCSIok0IqIZAki\nKZJAKyKSJYikSAKtiEiWIJIiCbQiIlmCSIok0IqIZAkiKZJAKyKSJYikSAKtiEiWIJIiCbQi\nIlmCSIok0IqIZAkiKZJAKyKSJYikSAKtiEiWIJIiCbQiIlmCSIok0IqIZAkiKZJAKyKSJYik\nSAKtiEiWIJIiCbRim4m0Zu6pZ940OHyl8x9Om37ef0cX7qrHWTt6qzBEymsEkqRyU5oklavY\nXiJtmHL9pmXTFg1f+9TiNT/7Wn1pJNKsjVG6R2+GSIok0IrtJdL8c6OTxdN7xqGLLo5Emt18\nM0RSJIFWbC+RZt8QnXTVu8ahC74QiTR19syPr2xc3dEV5dmtW+XcupC9TsRr0TYin3EXMsmJ\neC06LxJoxQIffmtRuuw/KSIN1m+LTjfXV46hzqmPGrPu7g3rr63fGV9f3hHlfmPk3LqQvU7E\na9E2Ip9xFzLJiXgtOi8SaMUCH14hmUVaMe3ekYsLTo9PN14T5ed79si5dSF7nYjXom1EPuMu\nZJIT8Vp0XiTQigU+/J5iZJkoWV/aLZ22evRnd9b7Ri7yHkmRBFqxvd4jiZ0Nt0wf2+VtFozt\ncUAkRRJoxfYSKd79vTze/b3ywt3GLJy6dOPGjU8Z8+VlXWuvqd8+ejNEUiSBVmwvkcwDc085\nY/Fg/DpuuzGzGsdhz46MmjNt5gUrxm6FSIok0IptJpJbEEmRBFoRkSxBJEUSaEVEsgSRFEmg\nFRHJEkRSJIFWRCRLEEmRBFoRkSxBJEUSaEVEsgSRFEmgFRHJEkRSJIFWRCRLEEmRBFoRkSyp\nokj5bJVApzRJKlcRkSxBJEUSaEVEsgSRFEmgFRHJEkRSJIFWRCRLEEmRBFoRkSxBJEUSaEVE\nsgSRFEmgFRHJEkRSJIFWRCRLEEmRBFoRkSxBJEUSaEVEsgSRFEmgFRHJEkRSJIFWRCRLEEmR\nBFoRkSxBJEUSaEVEsgSRFEmgFRHJEkRSJIFWRCRLEEmRBFoRkSxBJEUSaEVEsgSRFEmgFRHJ\nEn2RitoqgU5pklSuIiJZgkiKJNCKiGQJIimSQCsikiWIpEgCrYhIliCSIgm0IiJZgkiKJNCK\niGQJIimSQCsikiWIpEgCrYhIliCSIgm0IiJZgkiKJNCKiGQJIimSQCsikiWIpEgCrYhIliCS\nIgm0IiJZgkiKJNCKiGQJIimSQCsikiWIpEgCrYhIliCSIgm0IiJZgkiKJNCKiGQJIimSQCsi\nkiVli1TeVgl0SpOkchURyRJEUiSBVkQkSxBJkQRaEZEsQSRFEmhFRLIEkRRJoBURyRJEUiSB\nVkQkSxBJkQRaEZEsQSRFEmhFRLIEkRRJoBURyRJEUiSBVkQkSxBJkQRaEZEsQSRFEmhFRLIE\nkRRJoBURyRJEUiSBVkQkSxBJkQRaEZEsQSRFEmhFRLIEkRRJoBURyRJEUiSBVkQkSxBJkQRa\nEZEsKVakMreBJIFOaZJUriIiWYJIiiTQiohkCSIpkkArIpIliKRIAq2ISJYgkiIJtCIiWYJI\niiTQiohkCSIpkqNPU9MAABL5SURBVEArIpIliKRIAq2ISJYgkiIJtCIiWYJIiiTQiohkCSIp\nkkArIpIlu3fulPPvQvY6kZ3ymSqTTHIiVJyYlFxoZz5TnSV5ibRrl5x/F7LXieySz1SZZJIT\noeLEpORCu/KZ6izhpV0KCfR1U5JUriIv7SxBJEUSaEVEsgSRFEmgFRHJEkRSJIFWRCRLEEmR\nBFoRkSxBJEUSaEVEsiRHkUp9xtNJoFOaJJWriEiWIJIiCbQiIlmCSIok0IqIZAkiKZJAKyKS\nJYikSAKtiEiWIJIiCbQiIlmCSIok0IqIZAkiKZJAKyKSJYikSAKtiEiWIJIiCbQiIlmCSIok\n0IqIZAkiKZJAKyKSJYikSAKtiEiWIJIiCbQiIlmCSIok0IqIZAkiKZJAKyKSJYikSAKtiEiW\nIJIiCbQiIlmCSIok0IqIZIm3SMrPeDoJdEqTpHIVEckSRFIkgVZEJEsQSZEEWhGRLEEkRRJo\nRUSyBJEUSaAVEckSRFIkgVZEJEsQSZEEWhGRLEEkRRJoRUSyBJEUSaAVEckSRFIkgVZEJEsQ\nSZEEWhGRLEEkRRJoRUSyBJEUSaAVEckSRFIkgVZEJEsQSZEEWhGRLEEkRRJoRUSyBJEUSaAV\nEckSRFIkgVZEJEsQSZEEWhGRLHEUyeX5LfUZTydUzIMgkmMQSZEEWhGRLEEkRRJoRUSyBJEU\nSaAVEckSRFIkgVZEJEsQSZEEWhGRLEEkRRJoRUSyBJEUSaAVEckSRFIkgVZEJEsQSZEEWhGR\nLEEkRRJoRUSyBJEUSaAVEckSRFIkgVZEJEsQSZEEWhGRLEEkRRJoRUSyBJEUSaAVEckSRFIk\ngVZEJEsQSZEEWhGRLEEkRRJoRUSyxCqS3/ObJJUbgSSh4sQEkRyDSIok0IqIZAkiKZJAKyKS\nJYikSAKtiEiWIJIiCbQiIlmCSIok0IqIZAkiKZJAKyKSJYikSAKtiEiWIJIiCbQiIlmCSIok\n0IqIZAkiKZJAKyKSJYikSAKtiEiWIJIiCbQiIlmCSIok0IptJtKauaeeedNg4lozRiRNEmjF\n9hJpw5TrNy2btkhea8aIRMWJCSLNPzc6WTy9R1xrxohExYkJIs2+ITrpqneJa80Ykag4MWl7\nkQbrt0Wnm+srm6+Nx0/+S5THd+2SIu3aJVcwSSY5EYcFFUeomAcpudCugq2x5MBFWt4R5f6C\naxJS7Rz4S7sX74/yP9tG0m+2ifSaHYL0mF2C7DG7BdltugXZafYJst30ygcz/ZIMDErSZ7YL\nss+p4h5BdpkeQXZYKvbJhx8ckKTfqeJOQbotz5lLxeRz5lLRabO6VExuVlnRe7OOu33pyW9n\nw3B6zfMiPWaLIHvG3X4ou8wOQbabXYJsNd2CvGj2yQcb7JOkf1CSXvOCIN2JirsTFXeanYmK\nuwXZkqj4gulNVOyXpC9RcZ+l4tZExe2C7EhU3Gb2JCr2yAdLVhwYSFS0bNYXBdmTqJjcrDss\nm1VWtGxWk9ysiYrjN2tRuuw/Lru/l8f7uVdeuHvctdELw0GkRhCpOYg0lgfmnnLG4kFj7qxv\nH3dt7MJQEKkRRGoOImUNIjWCSM1BpKxBpEYQqTmIlDWI1AgiNQeRsgaRGkGk5iBS1iBSI4jU\nHETKGkRqBJGag0hZg0iNIFJzEClrEKkRRGoOImUNIjWCSM1BpKxBpEYQqTmIlDWI1AgiNQeR\nsgaRGkGk5iBS1iBSI4jUHETKGkRqBJGag0hZg0iNIFJzEClrEKkRRGoOImUNIjWCSM1BpKxB\npEYQqTmIlDWI1AgiNQeRsgaRGkGk5iBS1iBSI4jUHETKGkRqBJGag0hZg0iNIFJzEClrEKkR\nRGoOImUNIjWCSM1BpKxBpEYQqTmIlDWI1AgiNQeRsgaRGkGk5iBS1oxN3Y9XPSdW8KFVmwV5\neNUvBPn5qscF2bTqUUGeWdUlyOZV6+Sz+YMHJVnzQ0nWJir+dNUzgmxY9WSi4kZBnlz1SKLi\nTwV5btVa+fA/XCPJj1ZLsm7VLwXpSlR8dNUTgjy+6ueCPLVqgyCbVz2UqPhj+fD3PyDJj1dJ\nst5ps8qKT6x6TJBfWDbrevlgyYrJzfqTVc+OXs5nqrMkJ5HG8jcdA4J8quMZQa7u+LEgt3Ys\nFeT7Hd8Q5OGOBYJs6ZgnH/6tMyU55Z2SfKRjjyCXdjwhyPUdqwW5veM/BPlBxz8LsrHjM4Ls\n7jhXPvw7T5Xkr94uyXkd8v+VdXnHBkFu7LhXkO90fFOQBzuuEeTpjosF6e84Sz78n79PktPf\nJMmFHc8KclXHOkFu6rhbkO91/JsgD3VcKcjzHRfIB3vzbEnqfybJ2R37JCoxiBQHkZqDSJmD\nSHEQqTmIlDmIFAeRmoNImZO7SGs6BwVZ3ynn9tHOrYI81blZkGc75Wxv73xYkH2da+XDL/uh\nJKvukeTBzn5Bfta5W5CNnS8K8nSn/Pfghc6Nguzq/Jkg/Z0Pyoe/Z5Ukq5dJ8pPOXkEe7twh\nyOOdzwnyP51PCbKl8zFB9nQ+JMhg5xr58PfeJ8n935NkXWePII90Svuf7PylIM92bhJke+cj\nguzrlEKa790vyUr5r4j5Uaf8J7zM5C4SIe0YRCIkhyASITmkTUXq6Vq5sku+xm+JtOyaVXzF\n2lKkwUXT61GmL5L7RczjU0YvLr34iviN+lNnl9nsQNOya1b5FWtLkRZPW9y1eXPX4mk3yZ9s\nrI9curt+0fmn3DuehJCWXbPKr1hbinTG8qHzZWeOkGuGM390G8y9Mdoy034Y1ri17ppVfsU0\nRdopjyaZm+SBCGP6xPWBny7/2divd3mEKk5v9EKg66fjD84NPLV23fhjLqdsGjrfNHpotD5n\nbiMfHt0G07uikxXT1nptFZc1K2LFCl+zA1+xqm6yA01xIk302rX3y+d8ZeBf3l//jHjzOGXT\nuCtru4258/T67DtGya33mW3zolfK528fIe//zBrxovnZufVLui+p188eO8L7n7Pjl9fzHh0F\nc68fOr9+7gg5a/jw3tg2+OCPGs2nfzexVcatmN+aFbdi+a1ZYSumsslKSHEiTfTa9V//8rqz\nr531X9+evmSETGmkHv03uoD6RnNf/fN3LqivHCFnPGiu+fD6bQ+de/XobebUP/Stpn8Tv3Du\ndz71j3M3PHLeF0bIf85YvOTMG5d+9AOjn0N4YMq5N9x22w3nThk9pP+5b8jSF9/cOLtlamKr\njPsHz2/Nilux3NasuBVT2WQlJH+RXF67nr00uvJdY7710REy9TO3R3n/jbffPrqgaLNccF28\nwI+P3ugRc3b8iZv1Z4zd5rGrp516VdfYw89eb7bUoxut++vRB7vHmJ+fNtB/0djn4DbMj/7F\nmz1/7NNrjwx/KGXf6JbrvGjofOGs/a+Y55oVuGJ5rVlxK1bqJisx+Yvk8tr11EfMwPujlw4P\nzRghXX9z86B4aRdtlpnro/OfjD4vZ9xjTo9fcGyaNu42Zucdc+p/N/qZ11M3m8Gp0WKeGb3N\nKc9Er8CnvGB+MPpgcQYT+1Gzr5jnmhW7YrmsWXErVuomKzH5i+Ty2vWvHhraAj+bPnq3bZ++\naEtCpNPizzP+dPT5XfjRHV+5ss/0f/HCcbeJMvjgZ0dfXszpNA9P/S9jls0ZJSviV/99pusD\nea+Y55pVbcVy22QuK1bumpWX/EVyee16fvS09Ub/viz/6Nj9Bm8+/cFmkWbNnvrf0Xnn6PO7\n+7wPLjhl9oWnTxv9GHh95Pf66B6eW0+5eMaSmV+7cfrox/VvnnnrHWctMOau0fepIxm/2yCd\nJFfMc82KX7EDXrPiVqzUTVZi8hfJ5bXrih8MnV/f9Mcpa2fXN427eleUeFnXLBxF+5bMmzHj\nw19+ehTMe9qIDC75pzvMyjNnXTu6d6n3Kx+Y+k/Ru9t18u8HLAccJiLJFfNcs+JX7IDXrLgV\nK3WTlZhKHZDd8mB3IcsdFH9/lHxz7UIOJAWtmVyx8tesdTdZxlRKpLKSfHPtQkJIy65Z5Ves\nLUVKvrl2ISGkZdes8ivWliIl31y7kBDSsmtW+RVrS5GSb65dSAhp2TWr/Iq1pUiE5J0iREp8\nJtmT5LYgy6K9YvkjzSTSJUQpBYiU/EyyH8ltQZZF+8TyR5pJpEsOMH5HOz2PkVb20Kpf8hcp\n+cldP5LbgiyL9orljzSTSJccYPyOdnoeI63soVW/5C9S8pO7fiS3Bdk+JO2T5B9pWpAu8Yzf\n0U7PY6SVP7Tql/xFSn5y14/ktqD9fEg6+4ptGjof+yNNC9IlnvE72ul5jLTyh1b9kr9IyU/u\n+pHcFmT7KLHPLorkH2lakC4xfvso/I52eh4jrfyhVb/kL1Lyk7t+JLcFWRbttYsi+UeaFqRL\nPPdR+B3t9DxGemCHViu7iyJ/kZKf3PUjuS0oSTx3UST+SNOGdInfPgq/o52ex0gP7NBqZXdR\nFHEcKfGZZE+S24Ik8d9FYfkjzSRSJKXuoygzld9F0ZYHZH13UVT/gKzvPopSjxn73K3yuyja\n8oCs3y6KEA7I+u2jKLWi390qv4uiLQ/I+u2iCOGArN8+ilIr+t2tDT/9HcABWb9dFEEckPXa\nR1FqRb+7teGnv4M4IOuziyKUA7LZ91GUWrHUQ83lhQOyzqR1D8iWWtF3zSr+aXgOyDqT1j0g\nW2pFv7upfBo+Szgg60xa94BsqRX97qbyafgs4YCsM2ksqWUPyJZZ2uNulT/SzAFZZ8IBWcUD\nspXfRcEBWWfCAVnFA7LeO1/KCgdknQkHZBUPyHru2SgvHJB1JhyQzaWi590892yUFg7IOhMO\nyOZS0X/NPPdslBMOyDoTDsjmUpEDso7hgCwHZDkgm0M4IMsB2YkIB2SdwwFZNcIBWdNCB2Qr\nnzK/xKvcVP64pW8qv2LFiaT83bYTEc9dFEsvviL+P3Q/dbaZAOkSz3fyZVb0u1sbHpAdifJ3\n205E/HZR3F2/6PxT7m1achLpEs938qVW9LtbGx6QVf5uWxfit4ti7o3RFp72w/FDkUS6xPOd\nfKkVPe/Wfgdklb/b1u3LZXx2UUzvik5WTFs7busmkS4Z6p35nXypFf3XrM0OyCp/t21xXy7z\nwR/Fp0unf7c+AdIlua1ZgRVLXbPykr9Iyt9tW9z33158c+Pslqljy0kiXeL5Tr7Uip5389yz\nUVryF0n5u22L+/7bzouGzhfOMvtHusTznXypFf3u5rlno7y05XGkyn//rXd891FUPpVfsbYU\nqfLff+udA9hHUe1UfsXaUqTKf/+td1r0nXwAK9aWIlX++2+947uPovKp/Iq1pUiV//5b73ju\nAKh+Kr9ibSkSIXkHkQjJIYhESA5BJEJyCCIRkkMQKdgsqd2hXYGMBpHCyyOXNHbNI1KVgkjh\n5du1RfEZIlUpiKSb3R73QaQKBpGKyfLaPzXOT3vJL4zpu+qkw458x93R1W0Xv/nlk487f6eJ\nPfjmpa865BNjd4nEuO41h77uW+axKb/+splbY7T174+d/IpZjzV++K0Fr5589GWDxlxSi/OO\n+PYLXzeEiHoQqaC89piB6HTr4e8zpv+9B8+49oqTDrrZmIeO+sgXr5tx0B8Pxmoc+/Z/X7F6\n7B5Lam87/pL5Rx9822/N/uKsWvwxl12vr33wuo8d+hsb4h8e/57vrj6r9lVjnphfu+j73/9J\nhP7PMf9w5RtjRNSDSAXlqlr8G+ja2n8ac13t69HF3jf+Vp/p6Y1/9rlaZ6zGa/qa7rGkdsz2\nSLXaQbEZUw5+3pjP1D4XXby79ufxD0+O5Bt49evMuJd28e13v+J15a4YsQaRCsqLh8VfiPeG\n3+s35i2v6I5zRa3xMX/T291V+2zsweXN91hSWxCfHXVk/Kvs6lr0u+oNR3bH5K0Hb49+eHV8\ncebkgXEiNW4/LUZEO4hUVE6b/Jy5v/aP0aVfrQ1nqTHfeOsR8aV5sQe3Nt9hSW1JfPbaP4hP\nF9XuMubIkxo/mFNbF/3w9vjiObVt40RaMoqIdhCpqKysXWk+dPCT0aUjX716KFujF3z1m+9Z\nfVftPMtOt2Hw2oY9i2rfNual/7vxgyGRGj88p7ZV7rVrIKIdRCosJ/7+jiPfG1944+SdI+yE\n4+J9bCscRRp+afe2xku7MWvuQqTqBZEKy7W104dG/Uu1cxq7qJ+J5Dq2z5j+9ziKdGnjbVRn\n7d3N1tw79H4JkaoURCos246o/U5jv1zf+2pv/tzCT7/rqFiNdy286k0nO4q068TaaV+Zd9hv\nPNxszbbDXvXVW5YhUqWCSMXlzNrFQxcGrv+jIw87dmr0gqzvsldOPnreE44ima3zjjnkqJmP\nGfHr5/aTDh06IDuGiHIQqbicc/AT2hVIWUGkwrLlpe/VrkBKCyIVlJ/8258cdF/6zQa7R8Jh\n1aCDSAXl/NrvfcXhZg+NHKyt3VJ4JVJgEEk33WtGskW7CjmQIBIhOQSRCMkhiERIDkEkQnII\nIhGSQxCJkByCSITkkP8PF0rrb3dWIaoAAAAASUVORK5CYII=", | |
"text/plain": [ | |
"plot without title" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data", | |
"source": "R display func" | |
} | |
], | |
"source": [ | |
"plot_data %>%\n", | |
" ggplot(aes(x = year_month, y = frac, fill = answer)) +\n", | |
" geom_bar(position = \"stack\", stat = \"identity\") +\n", | |
" theme(axis.text.x = element_text(angle = 90))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"R version 3.5.1 (2018-07-02)\n", | |
"Platform: x86_64-conda_cos6-linux-gnu (64-bit)\n", | |
"Running under: Debian GNU/Linux 10 (buster)\n", | |
"\n", | |
"Matrix products: default\n", | |
"BLAS/LAPACK: /home/jupyterlab/conda/envs/r/lib/R/lib/libRlapack.so\n", | |
"\n", | |
"locale:\n", | |
" [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 \n", | |
" [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 \n", | |
" [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C \n", | |
"[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C \n", | |
"\n", | |
"attached base packages:\n", | |
"[1] stats graphics grDevices utils datasets methods base \n", | |
"\n", | |
"other attached packages:\n", | |
"[1] forcats_0.5.0 stringr_1.4.0 purrr_0.3.4 readr_1.3.1 \n", | |
"[5] tidyr_1.0.2 tibble_3.0.1 ggplot2_3.3.0 tidyverse_1.3.0\n", | |
"[9] dplyr_0.8.5 \n", | |
"\n", | |
"loaded via a namespace (and not attached):\n", | |
" [1] pbdZMQ_0.3-3 tidyselect_1.0.0 repr_1.1.0 haven_2.2.0 \n", | |
" [5] lattice_0.20-41 colorspace_1.4-1 vctrs_0.2.4 generics_0.0.2 \n", | |
" [9] htmltools_0.4.0 base64enc_0.1-3 rlang_0.4.5 pillar_1.4.3 \n", | |
"[13] glue_1.4.0 withr_2.2.0 DBI_1.1.0 dbplyr_1.4.3 \n", | |
"[17] modelr_0.1.7 readxl_1.3.1 uuid_0.1-4 lifecycle_0.2.0 \n", | |
"[21] munsell_0.5.0 gtable_0.3.0 cellranger_1.1.0 rvest_0.3.5 \n", | |
"[25] evaluate_0.14 labeling_0.3 fansi_0.4.1 broom_0.5.6 \n", | |
"[29] IRdisplay_0.7.0 Rcpp_1.0.4.6 scales_1.1.0 backports_1.1.6 \n", | |
"[33] IRkernel_0.8.12 jsonlite_1.6.1 farver_2.0.3 fs_1.4.1 \n", | |
"[37] hms_0.5.3 digest_0.6.25 stringi_1.4.6 grid_3.5.1 \n", | |
"[41] cli_2.0.2 tools_3.5.1 magrittr_1.5 crayon_1.3.4 \n", | |
"[45] pkgconfig_2.0.3 ellipsis_0.3.0 xml2_1.3.2 reprex_0.3.0 \n", | |
"[49] lubridate_1.7.8 assertthat_0.2.1 httr_1.4.1 rstudioapi_0.11 \n", | |
"[53] R6_2.4.1 nlme_3.1-147 compiler_3.5.1 " | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"sessionInfo()" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "R", | |
"language": "R", | |
"name": "conda-env-r-r" | |
}, | |
"language_info": { | |
"codemirror_mode": "r", | |
"file_extension": ".r", | |
"mimetype": "text/x-r-source", | |
"name": "R", | |
"pygments_lexer": "r", | |
"version": "3.5.1" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 4 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment