Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/moodymudskipper/ggdollar
Use nested lists of functions to set ggplot theme attributes intuitively
https://github.com/moodymudskipper/ggdollar
Last synced: 3 months ago
JSON representation
Use nested lists of functions to set ggplot theme attributes intuitively
- Host: GitHub
- URL: https://github.com/moodymudskipper/ggdollar
- Owner: moodymudskipper
- Created: 2019-12-08T16:38:12.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2019-12-08T16:38:18.000Z (almost 5 years ago)
- Last Synced: 2024-05-21T02:11:23.778Z (6 months ago)
- Language: R
- Homepage:
- Size: 12.7 KB
- Stars: 7
- Watchers: 3
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.Rmd
Awesome Lists containing this project
README
---
output: github_document
---```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```# ggdollar
The goal of ggdollar is to provide a more intuitive way to set `theme()` arguments
when using the package *ggplot2*.`theme()` is a complex function, we provide nested lists of functions that should
guide the users to what they through a sequence of limited choices thanks to
autocomplete.It's a draft, but works ok already.
## Installation
``` r
remotes::install_github("moodymudskipper/ggdollar")
```## Intro
`ggset`, `ggdo` and `ggremove` are nested lists of functions.
`ggset` lets you dig to the element you want to change,
and apply those changes, so that `ggset$panel$background(fill = "blue")` is the same as
`theme(panel.background = element_rect(fill = "blue"))`. The arguments are
most of the time ultimately forwarded to an `element_*()` function and you can
change many attributes of a component at once. `?margin` will provide the
description of most parameters.`ggdo` on the other hands starts from the action you want to perform, For instance
the equivalent to the above would be `ggdo$fill_background$panel("red")`.
Typically with `ggdo` we set only a single or a couple of attributes at once.`ggremove` is like `ggset` but helps removing components, it sets the relevant
`theme()` arguments to `element_blank()`, `NULL` or `"none"`.For instance `ggremove$panel$background()` is the same as `theme(panel.background = element_blank())`
There would have been many other ways to organize these lists and we went for
an partially arbitrary reorganization rather than a fully systematic one.```{r example}
library(ggdollar)
library(ggplot2)
ggplot(iris, aes(Sepal.Width, Sepal.Length, color = Species)) + geom_point() +
ggset$panel$background(fill = "white", color = "black") + # top down approach to change theme
ggdo$set_text$angle$axis$x$bottom$text(45) + # bottom up approach
ggremove$legend$all() # removing element
```## To do :
* find better names
* support in `ggdo` attributes that aren't related to `element_*()` functions
* Play around and see what doesn't feel right
* better doc
* cleaner code
* display native *ggplot2* code