---
title: "Viz Dash"
output:
flexdashboard::flex_dashboard:
orientation: rows
social: menu
source_code: embed
---
```{r setup, include=FALSE}
library(flexdashboard)
library(tidyverse);
library(heatmaply);
library(visdat); # for exploring missing data structure
library(ggplot2);
library(naniar);
library(dplyr);
library(tidyr);
library(hrbrthemes);
library(ggchicklet);
library(ggalt);
library(corrplot); #correlogram
library(plotly);
library(cowplot);
library(patchwork);
library(rworldmap);
library(RColorBrewer);
getwd()
setwd("C:/Users/farhat/OneDrive/Documents/R/farzana_assignment/dataviz_assignment")
#read data
df_2021 <- read.csv("data/world-happiness-report-2021.csv")
df_all <- read.csv("data/world-happiness-report.csv")
```
try1
=======================================================================
ROW
-----------------------------------------------------------------------
### Chart A
```{r, fig.height = 4, fig.width = 10}
a1 <- vis_dat(df_2021)+ labs(x = "Datatypes for 2021 dataset")
a2 <- vis_dat(df_all)+ labs(x = "Datatypes for all dataset")
a1 + a2
```
```{r}
```
try2
=======================================================================
ROW
-----------------------------------------------------------------------
### Chart C
```{r}
# dimensions
dimensions <- c('ladder_score',
'logged_GDP_per_capita',
'social_support',
'healthy_life_expectancy',
'freedom_to_make_life_choices',
'generosity',
'perceptions_of_corruption')
# map country to regions
country_region_dict = df_2021 %>%
select(country = ï..country_name, region = regional_indicator) %>% unique()
df_2021_long <- df_2021 %>%
select(country = ï..country_name, all_of(dimensions)) %>%
mutate(absence_of_corruption = 1- perceptions_of_corruption) %>%
pivot_longer(cols = c(all_of(dimensions),'absence_of_corruption'),
names_to = 'dimension', values_to = 'score') %>%
filter(dimension != "perceptions_of_corruption")
df_2021_tranformed <- df_2021_long %>%
group_by(dimension) %>%
mutate(min_value = min(score),
max_value = max(score)) %>%
mutate(score_pct = (score-min_value)/(max_value-min_value)) %>%
ungroup()
# getting top 10
df_2021_top10 <- df_2021_tranformed %>%
filter(dimension == "ladder_score") %>%
slice_max(score, n = 10) %>%
mutate(cat = 'top_10',
country_rank = rank(-score),
country_label = paste0(country, ' (', country_rank, ')'))
# getting bottom 10
df_2021_bottom10 <- df_2021_tranformed %>%
filter(dimension == "ladder_score") %>%
mutate(country_rank = rank(score),
country_label = paste0(country, ' (', country_rank, ')')) %>%
slice_min(score, n = 10) %>%
mutate(cat = 'bottom_10')
a5 <- ggplot(df_2021_top10, aes(x = reorder(country_label, score))) +
geom_chicklet(aes(y = 10, fill = 4.9), width = 0.5, radius = grid::unit(5, "pt")) +
geom_chicklet(aes(y = score, fill = score), width = 0.5, radius = grid::unit(5, "pt")) +
geom_text(aes(y = score), label = round(df_2021_top10$score,2), nudge_y = 0.4, size = 3) +
scale_y_continuous(expand = c(0, 0.1), position = "right", limits = c(0, 10)) +
scale_fill_gradient2(low = 'black', high = '#818aeb', mid = 'white', midpoint = 5) +
coord_flip() +
labs(y="Best possible life = 10", x = '',
title="Top 10 Happiest Countries in 2021",
subtitle="Happiest countries in Europe",
caption="Source: The World Happiness Report 2021") +
theme_ipsum(grid = '') +
theme(plot.title = element_text(size=15),
plot.subtitle = element_text(size = 12),
plot.caption = element_text(size = 10),
axis.title.x = element_text(size= 10, color = '#555955'),
axis.text.y = element_text(size = 10, color = 'black'),
axis.text.x = element_blank(),
legend.position = 'None')
a6 <- ggplot(df_2021_bottom10, aes(x = reorder(country_label, score))) +
geom_chicklet(aes(y = 10, fill = 4.9), width = 0.5, radius = grid::unit(5, "pt")) +
geom_chicklet(aes(y = score, fill = score), width = 0.5, radius = grid::unit(5, "pt")) +
geom_text(aes(y = score), label = round(df_2021_bottom10$score,2), nudge_y = 0.4, size = 3) +
scale_y_continuous(expand = c(0, 0.1), position = "right", limits = c(0, 10)) +
scale_fill_gradient2(low = '#074040', high = '#4cc2c2', mid = 'white', midpoint = 5) +
coord_flip() +
labs(y="Best possible life = 10", x = '',
title="Top 10 Saddest Countries in 2021",
subtitle="Countries struck by poverty and war",
caption="Source: The World Happiness Report 2021") +
theme_ipsum(grid = '') +
theme(plot.title = element_text(size=15),
plot.subtitle = element_text(size = 12),
plot.caption = element_text(size = 10),
axis.title.x = element_text(size= 10, color = '#555955'),
axis.text.y = element_text(size = 10, color = 'black'),
axis.text.x = element_blank(),
legend.position = 'None')
a5 + a6
```
### Chart D
This shows top correlated factors to happiness.
```{r}
df_cor <- df_2021 %>%
select(corruption = perceptions_of_corruption,
generosity = generosity,
freedom = freedom_to_make_life_choices,
life_expectancy = healthy_life_expectancy,
social_support = social_support,
GDP_per_capita = logged_GDP_per_capita,
happiness = ladder_score
)
corr <- cor(df_cor)
plot_ly(colors = "RdBu") %>%
add_heatmap(x = rownames(corr), y = colnames(corr), z = corr) %>%
colorbar(limits = c(-1, 1))
```