class: middle, right, title-slide # Make something random ## - learn something useful - ### Athanasia Mo Mowinckel ### 10.03.2021 --- background-image: url('img/david-tip-u_yzZGO1WeY-unsplash.jpg') background-size: cover <style type="text/css"> .title-slide{ background-image: url('img/kelly-mccrimmon-qDot1fgsmfI-unsplash.jpg'); background-size: auto 100%; background-position: -170% 50%; } </style> ??? we have busy work lives, where we constantly have expectations and deadlines and a muriad of external forces pushing us to accomplish something. This is not unnatural for work, but it does not actually create great learning environments. And what is life and work if we dont get the opportunity to learn and grow? So what does help us learn? --- class: middle, center <img src="https://drmowinckels.io/blog/2018-12-13-christmas-tree-in-ggplot/index_files/figure-html/featured-1.gif" width="33%" /><img src="https://drmowinckels.io/blog/2019-12-11-do-you-wanna-build-a-snowman/index_files/figure-html/featured-1.gif" width="33%" /><img src="https://drmowinckels.io/blog/2020-12-31-new-year-s-wishes/index.en_files/figure-html/featured-1.png" width="33%" /> ??? Every year on my blog, so far, I have a post where I make a Christmas card in ggplot2. This is a stupid, frivolous thing I do and really enjoy. It was inspired by a post I cannot find now, about a stats professor making this an end-of-term assignment to his students, after learning about visualisations in class. They would get one hour to create a christmas tree as a plot, in any tool they'd like. --- background-image: url('img/felipe-simo-wCPkbjb_LJo-unsplash.jpg') background-size: 50% background-position: 0 background-color: black ??? Dont ask why you should do it --- background-image: url('img/felipe-simo-wCPkbjb_LJo-unsplash.jpg'), url('img/matthew-feeney-S5FHvNkBHOI-unsplash.jpg') background-size: 50%, cover background-position: 0, 100% ??? just do it! --- background-image: url('img/jonathan-kemper-9tamF4J0vLk-unsplash.jpg') background-size: cover class: bottom, center, inverse ## problem solving -- ## clear goal -- ## internally motivated -- ## no pressure to succeed --- background-image: url('https://www.goodnet.org/photos/620x0/30712_hd.jpg') background-size: cover class: bottom, left [See Simone Giertz TED talk](https://www.goodnet.org/photos/620x0/30712_hd.jpg) ??? And this process is very reminiscent of Simone Giertz process of making useless things. While making something useless or frivolous, you learning something in a way that reduces external pressures (or even internal ones). Purposefully making something useless or stupid can really help your learning experience. --- class: middle, center <blockquote class="twitter-tweet"><p lang="en" dir="ltr">here you go <a href="https://twitter.com/thomasp85?ref_src=twsrc%5Etfw">@thomasp85</a> , I made your plot horrible. <a href="https://t.co/4Y1qxC7b6Y">pic.twitter.com/4Y1qxC7b6Y</a></p>— Athanasia Mowinckel (@DrMowinckels) <a href="https://twitter.com/DrMowinckels/status/1233408612221030400?ref_src=twsrc%5Etfw">February 28, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> ??? This relieving of pressure also works for teaching. Learners will become completely paralyzed if you ask them to make a 'pretty' plot. Who descides what's pretty and how do you get that? Ask them instead to make the plot ugly! and then they can start exploring how to do that. --- class: inverse, middle, center # Make something random - Learn something useful --- background-image: url('https://drmowinckels.io/blog/2020-12-31-new-year-s-wishes/index.en_files/figure-html/featured-1.png') background-size: contain background-color: black ??? As I was making my yearly ggplot christmas card, I was deciding on the color scheme to use. This is always a source of difficulty for me. What colours to choose?! --- background-image: url('img/color-hex.png') background-size: contain ??? I have a trusty site I use a lot. [color-hex](https://www.color-hex.com/) Take a little walk-about on the site. --- background-image: url('img/alessandro-bianchi-_kdTyfnUFAc-unsplash.jpg') background-size: contain background-color: black background-position: 0 class: inverse, right, middle # What if I had a package # that helped me get these colours? -- just for me -- I'll make it public if I want -- I can learn about httr -- I can learn API testing with vcr --- background-image: url('img/jon-tyson-r9T0LZv8xWQ-unsplash.jpg') background-size: auto 100% background-position: 0 .pull-left[] .pull-right[ ```r randcol <- function(){ sample(1:255, 1) } #' Generate random HEX colour #' #' @return character hex value #' @export #' #' @examples #' get_random_color() get_random_color <- function(){ grDevices::rgb(randcol(), randcol(), randcol(), maxColorValue = 255) } colour <- get_random_color() colour ``` ``` ## [1] "#C7AB0A" ``` ] --- background-image: url('img/jon-tyson-r9T0LZv8xWQ-unsplash.jpg') background-size: auto 100% background-position: 0 .pull-left[] .pull-right[ ```r #' Validate Hex #' #' validate if string is hexidecimal #' color code #' #' @param x hexidecimal character #' @return logical #' #' @export is_hex <- function(x){ grepl("^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", x) } is_hex(colour) ``` ``` ## [1] TRUE ``` ] --- .pull-left[ ```r colour_url <- function(){ "https://www.color-hex.com/" } get_bkg_color <- function(x){ x <- strsplit(x, "background-color:") x <- sapply(x, function(x) x[2]) x <- gsub(';|\\\">|</div>| ', '', x) fix_hex(x) } fix_hex <- function(x){ indx <- ifelse(nchar(x) == 4, TRUE, FALSE) x[indx] <- paste0(x[indx], gsub("#", "", x[indx])) x } ``` ] .pull-right[ ```r #' Get popular colour #' #' www.color-hex.com has a list of colours #' that have been liked by the most users. #' This function will retrieve all of these. #' #' @return character vector of hex colours #' @export #' #' @examples #' get_popular_colors() get_popular_colors <- function(){ url <- paste0(colour_url(), "popular-colors.php") resp <- xml2::read_html(url) cols <- rvest::html_nodes(resp, xpath = '//*[@class="colordva"]') cols <- as.character(cols) get_bkg_color(cols) } pop <- get_popular_colors() ``` ] --- ```r scales::show_col(pop) ``` <img src="index_files/figure-html/unnamed-chunk-7-1.png" width="100%" /> --- background-image: url("https://crop.kaleva.fi/_VavMJQMnsMU8V3_7JkJ49Hx6Q8=/2600x2600/smart/https%3A//lorien-media-prod.s3.amazonaws.com/images/archive/2021/02/10/2021.02.10.08.03.46_neo-4509522.jpg") background-size: contain --- .pull-left[ ```r remotes::install_github("Athanasiamo/colorhex") ``` ```r colour ``` ``` ## [1] "#C7AB0A" ``` ```r library(colorhex) ``` ``` ## ## Attaching package: 'colorhex' ``` ``` ## The following objects are masked _by_ '.GlobalEnv': ## ## get_popular_colors, get_random_color, is_hex ``` ```r colour_info <- get_color(colour) colour_info ``` ``` ## # Color-hex: #C7AB0A ## RGB: 199, 171, 10 ## HSL: 0.14, 0.90, 0.41 ## CMYK: 0.00, 0.14, 0.95 0.22 ## triadic: #0ac7ab, #ab0ac7 ## complementary: #0a26c7 ## used in 0 palettes ``` ] .pull-right[ ```r plot(colour_info) ``` <img src="index_files/figure-html/unnamed-chunk-10-1.png" width="100%" /> ] --- .pull-left[ ```r pop_palettes <- get_popular_palettes() pop_palettes <- pop_palettes[1:10,] plot(pop_palettes) ``` ] .pull-right[ <img src="index_files/figure-html/pop-pals-out-1.png" width="100%" /> ] --- .pull-left[ ```r library(ggplot2) ggplot(mtcars, aes(mpg)) + geom_density(aes(fill = disp, group = disp)) + scale_fill_palettehex_c(pop_palettes) ``` ] .pull-right[ <img src="index_files/figure-html/pop-pals-gg1-out-1.png" width="100%" /> ] --- .pull-left[ ```r ggplot(mtcars, aes(mpg, disp, colour = factor(cyl))) + geom_point() + scale_color_palettehex_d(pop_palettes, 3) ``` ] .pull-right[ <img src="index_files/figure-html/pop-pals-gg2-out-1.png" width="100%" /> ] --- background-image: url("https://usethis.r-lib.org/reference/figures/logo.png") background-size: contain background-position: 95% # Don't do everything alone .pull-left[ ```r library(usethis) use_r() use_data() use_[x]_licence() use_package() use_git() use_github() use_github("pkgdown") use_github_action_check_standard() use_github_links() use_cran_badge() use_lifecycle_badge("experimental") ``` ] --- background-image: url('img/kelly-sikkema-Kl1gC0ve620-unsplash.jpg') background-size: cover class: inverse # What did I learn? -- - httr / xml2 -- - S3 methods and classes -- - not so much API testing! --- background-image: url('https://raw.githubusercontent.com/Athanasiamo/DrMowinckels/master/static/img/logo.svg') background-size: auto 80% background-position: 95% # [<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512" class="rfa" style="height:0.75em;fill:currentColor;position:relative;"><path d="M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z"/></svg> drmowinckels.io](https://drmowinckels.io/) # [<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="rfa" style="height:0.75em;fill:currentColor;position:relative;"><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg> @DrMowinckels](https://twitter.com/DrMowinckels) # [<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512" class="rfa" style="height:0.75em;fill:currentColor;position:relative;"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg> Athanasiamo](https://github.com/Athanasiamo) --- background-image: url('https://pappaspocket.fi/wp-content/uploads/2019/05/SillaSipuliFB.jpg') background-size: contain