---
title: "Happy Vietnam Women’s Day" 
subtitle: "R for Fun"
author: "Nguyen Chi Dung"
output:
  html_document: 
    code_download: true
    code_folding: hide
    highlight: pygments
    # number_sections: yes
    theme: "flatly"
    toc: TRUE
    toc_float: TRUE
---

```{r setup,include=FALSE}
knitr::opts_chunk$set(echo = TRUE, warning = FALSE, message = FALSE)
```

```{r}
library(pryr)
library(tidyverse)

heart <- quote((x^2 + y^2 - 1)^3 - x^2 * y^3)

heart_at_x <- function(x) {
  function(y) eval(substitute_q(heart, list(x = x)), list(y = y))
}

heart_x <- seq(-1.136, 1.136, 0.001)
heart_y_lower <- sapply(heart_x, function(x) uniroot(heart_at_x(x), c(-2, 0.6))$root)
heart_y_upper <- sapply(heart_x, function(x) uniroot(heart_at_x(x), c(0.6, 2))$root)

heart_df <- data.frame(x = rep(heart_x, 2), 
                       y = c(heart_y_lower, heart_y_upper))

heart_df_minmax <- data.frame(x = heart_x,  
                              y_min = heart_y_lower, 
                              y_max = heart_y_upper)

set.seed(17091995)
heart_full <- apply(heart_df_minmax, 1, 
                    function(w) {
                      x <- w["x"]
                      y_min = w["y_min"]
                      y_max = w["y_max"]
                      y <- rnorm(2, mean = 0.33)
                      y <- y[between(y, y_min, y_max)]
                      x <- x[any(is.finite(y))]
                      data.frame(x, y, row.names = NULL)
                    })


heart_full <- bind_rows(heart_full)

heart_full <- heart_full %>% 
  mutate(z1 = runif(n()), 
         z2 = pmin(abs(rnorm(n())), 3), 
         order = runif(n())) %>%
  arrange(order)


library(hrbrthemes)

ggplot(heart_full, aes(x = x, y = y, color = z1, size = z2)) + 
  geom_point(pch = -1*as.hexmode(9829)) + 
  scale_color_gradient(limits = c(0, 1), low = "red3", high = "pink") + 
  scale_size(limits = c(0, 3), range = c(0.1, 20)) + 
  labs(title = "Happy Vietnam Women's Day", x = NULL, y = NULL, 
       subtitle =  "From D with Love") +  
  theme_ipsum(grid = "") + 
  theme(legend.position = "none", 
        axis.text.x = element_blank(),
        axis.text.y = element_blank(),
        axis.ticks = element_blank())
```

