Skip to contents

[Experimental]

wjp_bars() takes a data frame with a specific data structure (usually long shaped) and returns a ggplot object with a bar chart following WJP style guidelines.

Usage

wjp_bars(
  data,
  target,
  grouping,
  labels = NULL,
  colors = NULL,
  cvec = NULL,
  direction = "vertical",
  stacked = FALSE,
  lab_pos = NULL,
  expand = FALSE,
  order = NULL,
  width = 0.9,
  ptheme = WJP_theme()
)

Arguments

data

Data frame containing the data to plot

target

String. Column name of the variable that will supply the values to plot.

grouping

String. Column name of the variable that supplies the grouping values. Values can be grouped either in the X- or Y- Axis.

labels

String. Column name of the variable containing the value labels to display in plot. Default is NULL.

colors

String. Column name of the variable that contains the color grouping. Default is NULL.

cvec

Named vector with the colors to apply to bars. Vector names should have the values specified by the "colors" variables, while vector values should have

direction

String. Should the bars be plotted in a "horizontal" or "vertical" way? Default is "vertical".

stacked

Boolean. If TRUE, bars will be stacked on top of each other per group. Default is FALSE.

lab_pos

String. Column name of the variable that contains the coordinates for the value labels. Default is NULL.

expand

Boolean. If TRUE, the plot will give extra space for value labels. Default is FALSE.

order

String. Column name of the variable that contains the custom order for labels.

width

Numeric value between 0 and 1. Width of bars as a percentage of the space for each bar. Default is 0.9.

ptheme

ggplot theme function to apply to the plot. By default, function applies WJP_theme()

Value

A ggplot object

Examples

library(dplyr)
#> 
#> Attaching package: ‘dplyr’
#> The following objects are masked from ‘package:stats’:
#> 
#>     filter, lag
#> The following objects are masked from ‘package:base’:
#> 
#>     intersect, setdiff, setequal, union
library(tidyr)
library(haven)
library(ggplot2)

# Always load the WJP fonts (optional)
wjp_fonts()

# Preparing data
gpp_data <- WJPr::gpp

data4bars <- gpp_data %>%
  select(country, year, q1a) %>%
  group_by(country, year) %>%
  mutate(
    q1a = as.double(q1a),
    trust = case_when(
      q1a <= 2  ~ 1,
      q1a <= 4  ~ 0,
      q1a == 99 ~ NA_real_
    ),
    year = as.character(year)
  ) %>%
  summarise(
    trust   = mean(trust, na.rm = TRUE),
    .groups = "keep"
  ) %>%
  mutate(
    trust = trust*100
  ) %>%
  filter(year == "2022") %>%
  mutate(
    color_variable = country,
    value_label = paste0(
      format(
        round(trust, 0),
        nsmall = 0
      ),
      "%"
    ),
    label_position = trust + 5
  )

# Plotting chart
wjp_bars(
  data4bars,              
  target    = "trust",        
  grouping  = "country",
  labels    = "value_label",
  lab_pos   = "label_position",
  colors    = "color_variable",
  cvec      = c("Atlantis"  = "#2E4057",
                "Narnia"    = "#083D77",
                "Neverland" = "#F4D35E")
  )