Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pwwang/gglogger
gglogger is an R package that logs the calls used to create ggplot2 objects.
https://github.com/pwwang/gglogger
ggplot ggplot2 ggplot2-enhancements
Last synced: 14 days ago
JSON representation
gglogger is an R package that logs the calls used to create ggplot2 objects.
- Host: GitHub
- URL: https://github.com/pwwang/gglogger
- Owner: pwwang
- License: other
- Created: 2024-08-20T00:06:09.000Z (5 months ago)
- Default Branch: master
- Last Pushed: 2024-10-24T16:12:04.000Z (2 months ago)
- Last Synced: 2024-10-26T21:03:13.032Z (2 months ago)
- Topics: ggplot, ggplot2, ggplot2-enhancements
- Language: R
- Homepage: https://pwwang.github.io/gglogger/
- Size: 3.83 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
`gglogger` is an R package that logs the calls used to create `ggplot2` objects.
This can be useful for debugging, reproducibility, and understanding the sequence of operations used to build a plot.
> Have you ever created a plot in `ggplot2` and then forgotten how you made it? Or wanted to reproduce a plot but couldn't remember the exact sequence of operations you used? `gglogger` can help!
## Installation
You can install the `gglogger` package from source using `devtools`:
```r
devtools::install_github("pwwang/gglogger")# or
remotes::install_github("pwwang/gglogger")
```## Usage
To use the `gglogger` package, simply load it along with `ggplot2` and create your plots as usual. The package will automatically log the calls used to create the plots.
Previous
Now
```r
library(ggplot2)p <- ggplot(mpg, aes(x = displ, y = hwy)) +
geom_point()
``````r
library(ggplot2)
# Just add gglogger after ggplot2
library(gglogger)p <- ggplot(mpg, aes(x = displ, y = hwy)) +
geom_point()# Print the logs
print(p$logs)
## ggplot2::ggplot(mpg, aes(x = displ, y = hwy)) +
## geom_point()
```Evaluate the code in logs to reproduce the plot:
```r
p$logs$evaluate()
```You can also attach the variables in an environment for evaluation:
```r
env <- new.env()
env$mpg <- mpg
env$mpg$hwy <- mpg$hwy / 2
p$logs$evaluate(env)
```## Registering a function from a ggplot2 extension
```r
library(dplyr)
library(gglogger)mtcars_radar <- mtcars %>%
as_tibble(rownames = "group") %>%
mutate_at(vars(-group), scales::rescale) %>%
tail(4) %>%
select(1:10)ggradar <- register(ggradar::ggradar)
p <- ggradar(mtcars_radar, legend.position = "right")
print(p$logs)# ggradar::ggradar(mtcars_radar, legend.position = "right")
```## Generating code to reproduce a plot
```r
# p is a ggradar plot created in the previous examplecode <- p$logs$gen_code(setup = '
library(dplyr)
library(ggradar)mtcars_radar <- mtcars %>%
as_tibble(rownames = "group") %>%
mutate_at(vars(-group), scales::rescale) %>%
tail(4) %>%
select(1:10)
')cat(code)
## library(dplyr)
## library(ggradar)
##
## mtcars_radar <- mtcars %>%
## as_tibble(rownames = "group") %>%
## mutate_at(vars(-group), scales::rescale) %>%
## tail(4) %>%
## select(1:10)
##
##
## ggradar::ggradar(mtcars_radar, legend.position = "right")# eval(parse(text = code)) # to reproduce the plot
```## Limitations
`gglogger` cannot log the global settings used to create a plot, such as `theme_set()`. It can only log the calls used directly to create the plot itself. You may need to manually set these global settings when reproducing a plot, or prepare them using the `setup` argument in `gen_code()`.
If your data is piped to `ggplot` function, you need to use `|>` instead of `%>%`, otherwise the data will be logged as `.`.