• Stars
    star
    325
  • Rank 129,350 (Top 3 %)
  • Language
    R
  • License
    Creative Commons ...
  • Created almost 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🍑 Pomological plot theme for ggplot2

Pomological Colors

Garrick Aden-Buie

Installation

This package isn’t on CRAN, so you’ll need to use the devtools package to install it.

# If you don't have devtools installed
install.packages("devtools")

devtools::install_github("gadenbuie/ggpomological")

# To include the vignette
devtools::install_github("gadenbuie/ggpomological", build_vignettes=TRUE)

Introduction

This package provides a ggplot2 theme inspired by the USDA Pomological Watercolors collection and by Aron Atkins’s (@aronatkins) talk on parameterized RMarkdown at rstudio::conf 2018.

[1]

Color Palette

The colors for this theme were drawn from many images from the USDA Pomological Watercolors collection, I chose just a few that I thought worked well together for color and fill scales

scales::show_col(ggpomological:::pomological_palette)

and a few colors for the plot background and decoration

scales::show_col(unlist(ggpomological:::pomological_base))

I’ve also included a css file with the complete collection of color samples.

Setup theme and scales

There are three theme-generating functions:

  • theme_pomological() sets the plot theme to be representative of the paper and styling of the watercolors and includes a paper-colored background,

  • theme_pomological_plain() has the same styling, just with a transparent (or white) background,

  • theme_pomological_fancy() has the paper-colored background and defaults to a fancy handwritten font (Homemade Apple).

For color and fill scales, ggpomological provides scale_color_pomological() and scale_fill_pomological().

In the future, I might revisit this package to

  1. Increase colors in discrete scale

  2. Setup paired color scales. Lots of great color pairs in the extracted colors.

  3. Set up continuous scale colors (we’ll see…)

Fonts

A handwriting font is needed for the fully authentic pomological look, and I found a few from Google Fonts that fit the bill.

Alternatively, use something like calligrapher.com to create your own handwriting font!

But fonts can be painful in R, so the base functions – theme_pomological() and theme_pomological_plain() – don’t change the font by default. To opt into the full pomological effect, use theme_pomological_fancy() which is just an alias for theme_pomological(base_family = "Homemade Apple", base_size = 16).

Add paper background!

ggpomological also provides a function named paint_pomological that uses the magick package to add a pomological watercolor paper background and a subtle texture overlay.

Demo!

We’ll need ggplot2 (loaded with ggpomological) and dplyr

library(ggpomological)
library(dplyr)

Warning: If you don’t have the above fonts installed, you’ll get an error message with a lot of warnings when running the below examples. Just replace theme_pomological("Homemade Apple", 16) with theme_pomological() for the basic theme without the crazy fonts.

Basic iris plot

# Prep msleep data
msleep <- ggplot2::msleep[, c("vore", "sleep_rem", "sleep_total")]
msleep <- msleep[complete.cases(msleep), ]
msleep$vore <- paste0(msleep$vore, "vore")

# Base plot
basic_msleep_plot <- ggplot(msleep) +
  aes(x = sleep_rem, y = sleep_total, color = vore) +
  geom_point(size = 2) +
  labs(color = NULL)

# Just your standard ggplot
basic_msleep_plot 

# With pomological colors
basic_msleep_plot <- basic_msleep_plot + scale_color_pomological()
basic_msleep_plot

# With pomological theme
basic_msleep_plot + theme_pomological()

# With transparent background
basic_msleep_plot + theme_pomological_plain() 

# Or with "fancy" pomological settings
pomological_msleep <- basic_msleep_plot + theme_pomological_fancy()

# Painted!
paint_pomological(pomological_msleep, res = 110)

Stacked bar chart

stacked_bar_plot <- ggplot(diamonds) +
  aes(price, fill = cut) +
  geom_histogram(binwidth = 850) + 
  xlab('Price (USD)') + 
  ylab('Count') + 
  ggtitle("ggpomological") +
  scale_x_continuous(labels = scales::dollar_format()) +
  scale_fill_pomological()

stacked_bar_plot + theme_pomological("Homemade Apple", 16)

paint_pomological(
  stacked_bar_plot + theme_pomological_fancy("Homemade Apple"),
  res = 110
)

Density Plot

density_plot <- mtcars %>% 
  mutate(cyl = factor(cyl)) %>% 
  ggplot() +
  aes(mpg, fill = cyl, color = cyl)+
  geom_density(alpha = 0.75) + 
  labs(fill = 'Cylinders', colour = 'Cylinders', x = 'MPG', y = 'Density') +
  scale_color_pomological() +
  scale_fill_pomological()

density_plot + theme_pomological("Homemade Apple", 16)

paint_pomological(
  density_plot + theme_pomological_fancy(),
  res = 110
)

Points and lines

Data from the Texas Housing

big_volume_cities <- txhousing %>% 
  group_by(city) %>% 
  summarize(mean_volume = mean(volume, na.rm = TRUE)) %>% 
  arrange(-mean_volume) %>% 
  top_n(length(ggpomological:::pomological_palette)) %>% 
  pull(city)
#> Selecting by mean_volume

full_bar_stack_plot <- txhousing %>% 
  filter(city %in% big_volume_cities) %>% 
  group_by(city, year) %>% 
  summarize(mean_volume = mean(volume, na.rm = TRUE)) %>% 
  ungroup %>% 
  mutate(city = factor(city, big_volume_cities)) %>% 
  ggplot() +
  aes(year, mean_volume, fill = city, group = city) +
  geom_col(position = 'fill', width = 0.9) +
  labs(x = 'City', y = 'Mean Volume', color = 'City') +
  theme(panel.grid.minor.x = element_blank()) +
  scale_fill_pomological()

full_bar_stack_plot + theme_pomological("Homemade Apple", 16)

paint_pomological(
  full_bar_stack_plot + theme_pomological_fancy(),
  res = 110
)

One last plot

Using my own handwriting and the ggridges package.

ridges_pomological <- ggplot(diamonds) + 
  aes(x = carat, y = clarity, color = clarity, fill = clarity) + 
  ggridges::geom_density_ridges(alpha = 0.75) + 
  theme_pomological(
    base_family = 'gWriting',
    base_size = 20,
    base_theme = ggridges::theme_ridges()
    ) + 
  scale_fill_pomological() + 
  scale_color_pomological()

paint_pomological(ridges_pomological, res = 110)
#> Picking joint bandwidth of 0.057

  1. U.S. Department of Agriculture Pomological Watercolor Collection. Rare and Special Collections, National Agricultural Library, Beltsville, MD 20705

More Repositories

1

tidyexplain

🤹‍♀ Animations of tidyverse verbs using R, the tidyverse, and gganimate
R
758
star
2

rsthemes

🔮 Full RStudio IDE and Syntax Themes
SCSS
504
star
3

regexplain

🔍 An RStudio addin slash regex utility belt
R
476
star
4

xaringanthemer

😎 Give your xaringan slides some style
R
437
star
5

xaringanExtra

🎡 A playground of enhancements and extensions for xaringan slides.
JavaScript
433
star
6

countdown

⏲ countdown timer for R Markdown slides and HTML docs
JavaScript
148
star
7

epoxy

Extra-strength glue engines for R Markdown and Quarto
R
146
star
8

cleanrmd

📄✨Clean Class-Less R Markdown HTML Documents
CSS
128
star
9

tweet-conf-dash

A shiny twitter conference dashboard
CSS
121
star
10

shrtcts

Make Anything an RStudio Shortcut
R
103
star
11

ggweekly

🗓 🖨 Easy, printable, custom calendars and week planners
R
101
star
12

tweetrmd

Embed Tweets in R Markdown
R
101
star
13

gentle-ggplot2

📊 A Gentle Guide to the Grammar of Graphics with ggplot2
HTML
83
star
14

grkstyle

A Tidy R Code Style
R
81
star
15

metathis

ℹ️ <meta> tags and social media cards for R-made web things
R
62
star
16

js4shiny

Companion Package for JavaScript for Shiny Users
R
53
star
17

mueller-report

The ██redacted Mueller Report
R
47
star
18

shinyComponents

📝✨ Shiny Components in R Markdown
R
44
star
19

trump-tweet-time

🎮 An 8-bit Trump tweet guessing game for your "executive time"
R
36
star
20

starwarsdb

Relational Data from the Star Wars API for Learning and Teaching
R
35
star
21

covid19-florida

Florida COVID19 Data parsed from Florida DOH Dashboard and PDF reports
HTML
32
star
22

rsconf_tweets

rstudio::conf 2018 tweet explorer and FOMO reducer
R
30
star
23

status

HTML
29
star
24

ermoji

🤷‍♂️ RStudio Addin to Search and Copy Emoji
R
26
star
25

lorem

Generate Lorem Ipsum Text
R
26
star
26

shinyThings

Reusable Shiny Modules and Other Shiny Things
R
25
star
27

trug-ggplot2

📊 Slides for presentation on ggplot2 at Tampa R Users Meetup (Jan 2018)
R
23
star
28

yule-rstudio

⛄️🎄🖥 A Holiday Theme for RStudio
22
star
29

snippets

My snippets for RStudio (or elsewhere)
Vim Snippet
21
star
30

slides

HTML
20
star
31

tiktokrmd

Embed TikTok Videos in R Markdown
R
18
star
32

xaringan-logo

xaringan template with logo on all slides
HTML
17
star
33

tweets-of-the-year

R
16
star
34

xaringan2powerpoint

a snarky powerpoint from xaringan demo
HTML
16
star
35

drake-intro

Reproducible Data Workflows with Drake
R
14
star
36

getcitations

R script to extract pandoc citations from markdown text and create local .bib file from a master BibTeX library.
R
14
star
37

applause

👏 Zero-Configuration Applause/Claps/Kudos Button for R Markdown and Shiny apps
R
14
star
38

tidyjs-r

Tidy Data with JavaScript and tidy.js
R
14
star
39

sprinkles

Utility CSS and JavaScript for R Markdown
JavaScript
14
star
40

rstudio-global-2021-calendar

Build your talk calendar for rstudio::global(2021)
R
13
star
41

garrickadenbuie-com

My personal website
HTML
13
star
42

intro-to-git-for-scientists

Intro to git for scientists and other regular people
TeX
12
star
43

de-iris-my-repos

It's time to move on from iris
R
12
star
44

repromonkey

🐒 A Reproducibility Chaos Monkey
R
12
star
45

oceanic-eighties

👨‍🎤 Oceanic Eighties Theme for RStudio
11
star
46

js4shiny-frappeCharts

Building an HTML Widget, a demonstration
HTML
11
star
47

synamyn

Synonyms! An RStudio addin interface for ropenscilabs/syn
R
10
star
48

gathertweet

Commandline utility for quick {rtweet} tweet gathering
R
9
star
49

r-colors-css

A utility CSS stylesheet with R's color names
HTML
8
star
50

rsprefs

Manage and Sync Your RStudio Preferences
R
8
star
51

js4shiny-drumkit

HTML
8
star
52

branchMover

An RStudio Addin to Help Move the Default Branch of Your GitHub Repos
R
8
star
53

rstudio-ide-tips-demo

Companion to rstudio-ide-tips
R
7
star
54

gadenbuie

7
star
55

mctestanalysis

📚 Apps and reports for multiple-choice test analysis in R with Shiny
R
6
star
56

rstudio-ide-tips

Slides for RStudio IDE Tips
JavaScript
6
star
57

rstudioAddinFriend

RStudio addin to help you build RStudio addins
R
5
star
58

drake-rstudio-jobs-example

R
5
star
59

extra-awesome-xaringan

R
4
star
60

pagedown-cheatsheet

JavaScript
4
star
61

docker-rstudio-keras

🐳 RStudio + tidyverse + keras (cpu)
Dockerfile
4
star
62

positron-plus-1-e

A Positron extension pack for dev and data science.
4
star
63

rstatsnyc-2018-tweets

Tweets from #rstatsnyc -- remix of rsconf tweet shiny app
R
3
star
64

ten-thousand-functions

Ten Thousand Reasons to Love Functions
CSS
3
star
65

msglooker

A Shiny App to View And Export Outlook Messages
R
3
star
66

crantrack

Hourly snapshots of CRAN's incoming packages folder
R
3
star
67

fwiffer

📏✨ Fixed width file definitions made easy
R
3
star
68

xaringan-club

A place to talk about xaringan
HTML
3
star
69

js4shiny-workshop-webpage

HTML
3
star
70

rstudioconf-notes

HTML
2
star
71

rocker-verse-metaflow

rocker/verse + {metaflow}
Dockerfile
2
star
72

nonlinear-opt-notes

Class notes for Nonlinear Optimization and Game Theory at USF, Spring 2016
2
star
73

rstats-tweets

R
2
star
74

alix

Warn About Accessibility Issues in HTML Documents and Apps
R
2
star
75

quarto-partials

Partial content templates for Quarto
Lua
1
star
76

resume

HTML
1
star
77

podcasts

R-based podcast catcher
R
1
star
78

ms-render-ui-delay

R
1
star
79

aws-p2-setup

My AWS EC2 p2 instance setup with nvidia-docker
Shell
1
star
80

usf-boot-camp-R

Slides and materials for R sessions at USF Code & Data Boot Camp 2014
R
1
star
81

xaringan-line-focus

HTML
1
star
82

rmedicine-2024-bslib

Next Generation Shiny Apps with bslib
R
1
star
83

revealjs-text-resizer

Resize text on quarto slides
HTML
1
star
84

quarto-reprex-listing-chomp

EJS
1
star
85

docker-shinycannon

Dockerfile
1
star
86

speedDate

Quick Date Format Strings for strftime
R
1
star
87

quarto-tachyons

Tachyons Utility CSS for Quarto
CSS
1
star