wjake wjake website

This is a personal R package containing utility functions and custom themes for ggplot2 and gt.

Installation

You can install the released version of wjake from CRAN with:

install.packages("wjake")

To install the development version from GitHub use:

# install.packages("remotes")
# remotes::install_github("wjakethompson/wjake")
install.packages("wjake", repos = c('https://wjakethompson.r-universe.dev', 'https://cloud.r-project.org'))

Examples

Create branded plots with theme_wjake():

library(ggplot2)

ggplot(penguins, aes(x = bill_len, y = flipper_len)) +
  geom_point(aes(color = species), na.rm = TRUE) +
  labs(
    x = "Bill length (mm)",
    y = "Flipper length (mm)",
    title = "Seminal ggplot2 scatterplot example",
    subtitle = "A plot that is only useful for demonstration purposes",
    caption = "Brought to you by \U1F427",
    color = "Species"
  ) +
  theme_wjake()

And tables with gt_theme_wjake():

library(gt)

head(penguins) |>
  gt() |>
  gt_theme_wjake(bg_color = "white") |>
  fmt_number(year, decimals = 0, use_seps = FALSE)
<style>#vsryprahzd table { font-family: 'Source Sans Pro', system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #vsryprahzd thead, #vsryprahzd tbody, #vsryprahzd tfoot, #vsryprahzd tr, #vsryprahzd td, #vsryprahzd th { border-style: none; } #vsryprahzd p { margin: 0; padding: 0; } #vsryprahzd .gt_table { display: table; border-collapse: collapse; line-height: normal; margin-left: 0; margin-right: auto; color: #333333; font-size: 16px; font-weight: normal; font-style: normal; background-color: #FFFFFF; width: auto; border-top-style: solid; border-top-width: 1px; border-top-color: #A8A8A8; border-right-style: none; border-right-width: 2px; border-right-color: #D3D3D3; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #A8A8A8; border-left-style: none; border-left-width: 2px; border-left-color: #D3D3D3; } #vsryprahzd .gt_caption { padding-top: 4px; padding-bottom: 4px; } #vsryprahzd .gt_title { color: #333333; font-size: 125%; font-weight: initial; padding-top: 4px; padding-bottom: 4px; padding-left: 5px; padding-right: 5px; border-bottom-color: #FFFFFF; border-bottom-width: 0; } #vsryprahzd .gt_subtitle { color: #333333; font-size: 85%; font-weight: initial; padding-top: 3px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; border-top-color: #FFFFFF; border-top-width: 0; } #vsryprahzd .gt_heading { background-color: #FFFFFF; text-align: left; border-bottom-color: #FFFFFF; border-left-style: none; border-left-width: 1px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 1px; border-right-color: #D3D3D3; } #vsryprahzd .gt_bottom_border { border-bottom-style: none; border-bottom-width: 2px; border-bottom-color: #D3D3D3; } #vsryprahzd .gt_col_headings { border-top-style: none; border-top-width: 1px; border-top-color: #000000; border-bottom-style: solid; border-bottom-width: 3px; border-bottom-color: #000000; border-left-style: none; border-left-width: 1px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 1px; border-right-color: #D3D3D3; } #vsryprahzd .gt_col_heading { color: #333333; background-color: #FFFFFF; font-size: 80%; font-weight: bolder; text-transform: uppercase; border-left-style: none; border-left-width: 1px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 1px; border-right-color: #D3D3D3; vertical-align: bottom; padding-top: 5px; padding-bottom: 6px; padding-left: 5px; padding-right: 5px; overflow-x: hidden; } #vsryprahzd .gt_column_spanner_outer { color: #333333; background-color: #FFFFFF; font-size: 80%; font-weight: bolder; text-transform: uppercase; padding-top: 0; padding-bottom: 0; padding-left: 4px; padding-right: 4px; } #vsryprahzd .gt_column_spanner_outer:first-child { padding-left: 0; } #vsryprahzd .gt_column_spanner_outer:last-child { padding-right: 0; } #vsryprahzd .gt_column_spanner { border-bottom-style: solid; border-bottom-width: 3px; border-bottom-color: #000000; vertical-align: bottom; padding-top: 5px; padding-bottom: 5px; overflow-x: hidden; display: inline-block; width: 100%; } #vsryprahzd .gt_spanner_row { border-bottom-style: hidden; } #vsryprahzd .gt_group_heading { padding-top: 4px; padding-bottom: 4px; padding-left: 5px; padding-right: 5px; color: #333333; background-color: #FFFFFF; font-size: 100%; font-weight: initial; text-transform: inherit; border-top-style: none; border-top-width: 2px; border-top-color: #D3D3D3; border-bottom-style: none; border-bottom-width: 2px; border-bottom-color: #D3D3D3; border-left-style: none; border-left-width: 1px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 1px; border-right-color: #D3D3D3; vertical-align: middle; text-align: left; } #vsryprahzd .gt_empty_group_heading { padding: 0.5px; color: #333333; background-color: #FFFFFF; font-size: 100%; font-weight: initial; border-top-style: none; border-top-width: 2px; border-top-color: #D3D3D3; border-bottom-style: none; border-bottom-width: 2px; border-bottom-color: #D3D3D3; vertical-align: middle; } #vsryprahzd .gt_from_md > :first-child { margin-top: 0; } #vsryprahzd .gt_from_md > :last-child { margin-bottom: 0; } #vsryprahzd .gt_row { padding-top: 3px; padding-bottom: 3px; padding-left: 5px; padding-right: 5px; margin: 10px; border-top-style: solid; border-top-width: 1px; border-top-color: #D3D3D3; border-left-style: none; border-left-width: 1px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 1px; border-right-color: #D3D3D3; vertical-align: middle; overflow-x: hidden; } #vsryprahzd .gt_stub { color: #333333; background-color: #FFFFFF; font-size: 100%; font-weight: initial; text-transform: inherit; border-right-style: solid; border-right-width: 2px; border-right-color: #D3D3D3; padding-left: 5px; padding-right: 5px; } #vsryprahzd .gt_stub_row_group { color: #333333; background-color: #FFFFFF; font-size: 100%; font-weight: initial; text-transform: inherit; border-right-style: solid; border-right-width: 2px; border-right-color: #D3D3D3; padding-left: 5px; padding-right: 5px; vertical-align: top; } #vsryprahzd .gt_row_group_first td { border-top-width: 2px; } #vsryprahzd .gt_row_group_first th { border-top-width: 2px; } #vsryprahzd .gt_summary_row { color: #333333; background-color: #FFFFFF; text-transform: inherit; padding-top: 8px; padding-bottom: 8px; padding-left: 5px; padding-right: 5px; } #vsryprahzd .gt_first_summary_row { border-top-style: solid; border-top-color: #D3D3D3; } #vsryprahzd .gt_first_summary_row.thick { border-top-width: 2px; } #vsryprahzd .gt_last_summary_row { padding-top: 8px; padding-bottom: 8px; padding-left: 5px; padding-right: 5px; border-bottom-style: solid; border-bottom-width: 2px; border-bottom-color: #D3D3D3; } #vsryprahzd .gt_grand_summary_row { color: #333333; background-color: #FFFFFF; text-transform: inherit; padding-top: 8px; padding-bottom: 8px; padding-left: 5px; padding-right: 5px; } #vsryprahzd .gt_first_grand_summary_row { padding-top: 8px; padding-bottom: 8px; padding-left: 5px; padding-right: 5px; border-top-style: double; border-top-width: 6px; border-top-color: #D3D3D3; } #vsryprahzd .gt_last_grand_summary_row_top { padding-top: 8px; padding-bottom: 8px; padding-left: 5px; padding-right: 5px; border-bottom-style: double; border-bottom-width: 6px; border-bottom-color: #D3D3D3; } #vsryprahzd .gt_striped { background-color: rgba(128, 128, 128, 0.05); } #vsryprahzd .gt_table_body { border-top-style: none; border-top-width: 2px; border-top-color: #D3D3D3; border-bottom-style: solid; border-bottom-width: 2px; border-bottom-color: #D3D3D3; } #vsryprahzd .gt_footnotes { color: #333333; background-color: #FFFFFF; border-bottom-style: none; border-bottom-width: 2px; border-bottom-color: #D3D3D3; border-left-style: none; border-left-width: 2px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 2px; border-right-color: #D3D3D3; } #vsryprahzd .gt_footnote { margin: 0px; font-size: 90%; padding-top: 4px; padding-bottom: 4px; padding-left: 5px; padding-right: 5px; } #vsryprahzd .gt_sourcenotes { color: #333333; background-color: #FFFFFF; border-bottom-style: none; border-bottom-width: 2px; border-bottom-color: #D3D3D3; border-left-style: none; border-left-width: 0px; border-left-color: #D3D3D3; border-right-style: none; border-right-width: 0px; border-right-color: #D3D3D3; } #vsryprahzd .gt_sourcenote { font-size: 12.8px; padding-top: 10px; padding-bottom: 10px; padding-left: 5px; padding-right: 5px; } #vsryprahzd .gt_left { text-align: left; } #vsryprahzd .gt_center { text-align: center; } #vsryprahzd .gt_right { text-align: right; font-variant-numeric: tabular-nums; } #vsryprahzd .gt_font_normal { font-weight: normal; } #vsryprahzd .gt_font_bold { font-weight: bold; } #vsryprahzd .gt_font_italic { font-style: italic; } #vsryprahzd .gt_super { font-size: 65%; } #vsryprahzd .gt_footnote_marks { font-size: 75%; vertical-align: 0.4em; position: initial; } #vsryprahzd .gt_asterisk { font-size: 100%; vertical-align: 0; } #vsryprahzd .gt_indent_1 { text-indent: 5px; } #vsryprahzd .gt_indent_2 { text-indent: 10px; } #vsryprahzd .gt_indent_3 { text-indent: 15px; } #vsryprahzd .gt_indent_4 { text-indent: 20px; } #vsryprahzd .gt_indent_5 { text-indent: 25px; } #vsryprahzd .katex-display { display: inline-flex !important; margin-bottom: 0.75em !important; } #vsryprahzd div.Reactable > div.rt-table > div.rt-thead > div.rt-tr.rt-tr-group-header > div.rt-th-group:after { height: 0px !important; } </style>
species island bill_len bill_dep flipper_len body_mass sex year
Adelie Torgersen 39.1 18.7 181  3,750  male 2007 
Adelie Torgersen 39.5 17.4 186  3,800  female 2007 
Adelie Torgersen 40.3 18.0 195  3,250  female 2007 
Adelie Torgersen NA NA NA NA NA 2007 
Adelie Torgersen 36.7 19.3 193  3,450  female 2007 
Adelie Torgersen 39.3 20.6 190  3,650  male 2007 
Table: @wjakethompson.com

Code of Conduct

Please note that the wjake project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.