From 695d4021d41c890e3e8a85ddaa3f609a6b761d44 Mon Sep 17 00:00:00 2001 From: Hadley Wickham Date: Mon, 25 Nov 2024 15:34:16 -0600 Subject: [PATCH] Upkeep (#2) * travis -> GHA * magrittr pipe -> base pipe * Rename functions that look like S3 methods * Other minor R CMD check failures --- .Rbuildignore | 1 + .github/.gitignore | 1 + .github/workflows/R-CMD-check.yaml | 51 +++++++++++++++++++++++++++++ .travis.yml | 5 --- DESCRIPTION | 9 +++-- NAMESPACE | 7 ++-- R/boxplot.r | 6 ++-- R/grobs-complex.r | 2 +- R/plot.r | 16 ++++----- R/scales-list.r | 2 ++ R/time-series.r | 4 ++- R/utilities.r | 12 ------- README-ex-1.png | Bin 19410 -> 0 bytes README-ex-2.png | Bin 20531 -> 0 bytes README.Rmd | 18 ++++++---- README.md | 38 ++++++++++++--------- man/figures/README-ex-1.png | Bin 0 -> 19478 bytes man/figures/README-ex-2.png | Bin 0 -> 20588 bytes man/gghistogram.Rd | 3 +- man/ggopt.Rd | 6 +++- man/ggplot.Rd | 19 +++++------ man/ggsave.Rd | 15 ++++++--- man/pipe.Rd | 12 ------- man/pscontinuous.Rd | 23 +++++++++++-- man/sccolour.Rd | 9 ++--- man/scgradient.Rd | 24 +++++++++++--- man/scmanual.Rd | 11 +++++-- 27 files changed, 188 insertions(+), 106 deletions(-) create mode 100644 .github/.gitignore create mode 100644 .github/workflows/R-CMD-check.yaml delete mode 100644 .travis.yml delete mode 100644 README-ex-1.png delete mode 100644 README-ex-2.png create mode 100644 man/figures/README-ex-1.png create mode 100644 man/figures/README-ex-2.png delete mode 100644 man/pipe.Rd diff --git a/.Rbuildignore b/.Rbuildignore index 002dae8..693b8f5 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -3,3 +3,4 @@ ^\.travis\.yml$ ^README\.Rmd$ ^README-.*\.png$ +^\.github$ diff --git a/.github/.gitignore b/.github/.gitignore new file mode 100644 index 0000000..2d19fc7 --- /dev/null +++ b/.github/.gitignore @@ -0,0 +1 @@ +*.html diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml new file mode 100644 index 0000000..562fe0f --- /dev/null +++ b/.github/workflows/R-CMD-check.yaml @@ -0,0 +1,51 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +on: + push: + branches: [main, master] + pull_request: + +name: R-CMD-check.yaml + +permissions: read-all + +jobs: + R-CMD-check: + runs-on: ${{ matrix.config.os }} + + name: ${{ matrix.config.os }} (${{ matrix.config.r }}) + + strategy: + fail-fast: false + matrix: + config: + - {os: macos-latest, r: 'release'} + - {os: windows-latest, r: 'release'} + - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} + - {os: ubuntu-latest, r: 'release'} + - {os: ubuntu-latest, r: 'oldrel-1'} + + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + R_KEEP_PKG_SOURCE: yes + + steps: + - uses: actions/checkout@v4 + + - uses: r-lib/actions/setup-pandoc@v2 + + - uses: r-lib/actions/setup-r@v2 + with: + r-version: ${{ matrix.config.r }} + http-user-agent: ${{ matrix.config.http-user-agent }} + use-public-rspm: true + + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::rcmdcheck + needs: check + + - uses: r-lib/actions/check-r-package@v2 + with: + upload-snapshots: true + build_args: 'c("--no-manual","--compact-vignettes=gs+qpdf")' diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 8d139ac..0000000 --- a/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -# R for travis: see documentation at https://docs.travis-ci.com/user/languages/r - -language: R -sudo: false -cache: packages diff --git a/DESCRIPTION b/DESCRIPTION index 516fa28..2666871 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -8,19 +8,18 @@ Description: This is the original ggplot package brought back to License: GPL URL: https://github.com/hadley/ggplot1 BugReports: https://github.com/hadley/ggplot1/issues -Depends: - R (>= 2.10) +Depends: + R (>= 4.2) Imports: - ggplot2movies, grid, - magrittr, MASS, plyr, RColorBrewer, reshape (>= 0.7.4) Suggests: + ggplot2movies, mapproj, quantreg Encoding: UTF-8 LazyData: yes -RoxygenNote: 6.1.1 +RoxygenNote: 7.3.2 diff --git a/NAMESPACE b/NAMESPACE index 100a8b4..859fa83 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -9,11 +9,13 @@ S3method("update<-",ps_equal) S3method("update<-",ps_map) S3method("update<-",scale) S3method("update<-",scale_cont_colour) +S3method("update<-",scales) S3method(breaks,categorical) S3method(breaks,continuous) S3method(breaks,gradient) S3method(breaks,manual) S3method(breaks,ps_double) +S3method(breaks,time) S3method(defaultgrob,categorical) S3method(defaultgrob,default) S3method(defaultgrob,gradient) @@ -34,6 +36,7 @@ S3method(labels,continuous) S3method(labels,gradient) S3method(labels,manual) S3method(labels,ps_double) +S3method(labels,time) S3method(map_aesthetic,categorical) S3method(map_aesthetic,continuous) S3method(map_aesthetic,gradient) @@ -42,6 +45,7 @@ S3method(map_aesthetic,ps_double) S3method(map_aesthetic,ps_map) S3method(map_aesthetic,scale) S3method(map_aesthetic,scale_cont_colour) +S3method(map_aesthetic,scales) S3method(output,ps_double) S3method(output,scale) S3method(output,scale_cont_colour) @@ -59,8 +63,8 @@ S3method(range,continuous) S3method(range,ps_double) S3method(range,scale) S3method(range,scales) +S3method(range,time) S3method(summary,ggplot1) -export("%>%") export(alpha) export(chop) export(chop_auto) @@ -122,4 +126,3 @@ export(trans_log2) export(trans_none) export(trans_sqrt) import(grid) -importFrom(magrittr,"%>%") diff --git a/R/boxplot.r b/R/boxplot.r index 9d85d1a..3204606 100644 --- a/R/boxplot.r +++ b/R/boxplot.r @@ -3,7 +3,7 @@ # @keyword internal # @alias boxplot.weighted # @alias boxplot_stats_weighted -boxplot.weighted.formula <- function(formula, data = NULL, ..., weights=1, subset, na.action = NULL) { +boxplot_weighted_formula <- function(formula, data = NULL, ..., weights=1, subset, na.action = NULL) { if (missing(formula) || (length(formula) != 3)) stop("'formula' missing or incorrect") m <- match.call(expand.dots = FALSE) @@ -16,10 +16,10 @@ boxplot.weighted.formula <- function(formula, data = NULL, ..., weights=1, subse mf <- eval(m, parent.frame()) response <- attr(attr(mf, "terms"), "response") - boxplot.weighted(split(mf[[response]], mf[-response]), weights=split(weights, mf[-response]), ...) + boxplot_weighted(split(mf[[response]], mf[-response]), weights=split(weights, mf[-response]), ...) } -boxplot.weighted <- +boxplot_weighted <- function (x, weights=1, ..., range = 1.5, width = NULL, varwidth = FALSE, notch = FALSE, outline = TRUE, names, plot = TRUE, border = graphics::par("fg"), col = NULL, log = "", pars = list(boxwex = 0.8, staplewex = 0.5, diff --git a/R/grobs-complex.r b/R/grobs-complex.r index a5f6c93..9f950b3 100644 --- a/R/grobs-complex.r +++ b/R/grobs-complex.r @@ -193,7 +193,7 @@ grob_boxplot <- function(aesthetics, breaks=length(unique(aesthetics$x)), orient fill = tapply(rep(as.character(aesthetics$fill), length=n), breakpoints, function(x) x[1]) ) - boxes <- boxplot.weighted.formula(aesthetics$y ~ breakpoints, weights=aesthetics$weight, plot=FALSE, ...) + boxes <- boxplot_weighted_formula(aesthetics$y ~ breakpoints, weights=aesthetics$weight, plot=FALSE, ...) # lower whisker, lower hinge, median, upper hinge and upper whisker outliers <- list(y = boxes$out, x = as.vector(xrange$median[boxes$group]), colour="red") diff --git a/R/plot.r b/R/plot.r index 7a3d56b..e777ee9 100644 --- a/R/plot.r +++ b/R/plot.r @@ -58,7 +58,7 @@ #' For other scales, see: #' #' \itemize{ -#' \item \code{\link{sccolour}}: colour categorical variables using Brewer colour scales (see also \'code{\link{scfill}}) +#' \item \code{\link{sccolour}}: colour categorical variables using Brewer colour scales (see also \code{\link{scfill}}) #' \item \code{\link{scgradient}}: colour continuous scales with a gradient (see also \code{\link{scfillgradient}}) #' \item \code{\link{schcl}}: map continuous variable to hue, chroma or luminance components (see also \code{\link{scfillhcl}}) #' \item \code{\link{scmanual}}: no automatic conversion, uses raw values directly @@ -107,18 +107,18 @@ #' #' # Create complex plots from simple components #' p <- ggplot(tips, formula = smoker ~ sex, aesthetics = list(y = tip, x = total_bill)) -#' p %>% ggpoint() +#' p |> ggpoint() #' -#' p %>% -#' ggpoint() %>% +#' p |> +#' ggpoint() |> #' ggsmooth() #' -#' p %>% -#' ggpoint() %>% +#' p |> +#' ggpoint() |> #' ggsmooth(method = lm, formula = y~x) #' -#' p %>% -#' ggpoint() %>% +#' p |> +#' ggpoint() |> #' ggabline(slope = c(0.1,0.15,0.2)) #' #' (p2 <- ggabline(ggpoint(p, aes = list(colour = tip/total_bill)), slope = c(0.1, 0.15, 0.2))) diff --git a/R/scales-list.r b/R/scales-list.r index be49a11..2171ea6 100644 --- a/R/scales-list.r +++ b/R/scales-list.r @@ -59,6 +59,7 @@ guides.scales <- function(scale, ...) { # @arguments scales object # @arguments data # @keyword internal +#' @export "update<-.scales" <- function(x, value) { if (is.matrix(value)) { value <- do.call(plyr::rbind.fill, value) @@ -81,6 +82,7 @@ guides.scales <- function(scale, ...) { # @arguments data # @arguments other arguments (unused) # @keyword internal +#' @export map_aesthetic.scales <- function(scale, data, ...) { if (is.list(data) && !is.data.frame(data)) data <- data[[1]] if (length(scale) == 0) return(data) diff --git a/R/time-series.r b/R/time-series.r index 589c912..d399ccd 100644 --- a/R/time-series.r +++ b/R/time-series.r @@ -17,16 +17,18 @@ position_time <- function(variable="x", name="", transform=trans_none, range=c(N sc } +#' @export breaks.time <- function(scale, ...) { sdates <- seq(scale$range[1], scale$range[2], by=scale$by) scale$transform[[1]](as.numeric(sdates)) } - +#' @export labels.time <- function(object, ...) { as.character(seq(object$range[1], object$range[2], by=object$by)) } +#' @export range.time <- function(scale, ...) expand_range(scale$range, scale$expand[1], scale$expand[2]) diff --git a/R/utilities.r b/R/utilities.r index 6b44346..7078865 100644 --- a/R/utilities.r +++ b/R/utilities.r @@ -44,15 +44,3 @@ compact <- function(x) { stamp <- function(...) { suppressWarnings(reshape::stamp(...)) } - -#' Pipe operator -#' -#' See \code{\link[magrittr]{\%>\%}} for more details. -#' -#' @name %>% -#' @rdname pipe -#' @keywords internal -#' @export -#' @importFrom magrittr %>% -#' @usage lhs \%>\% rhs -NULL diff --git a/README-ex-1.png b/README-ex-1.png deleted file mode 100644 index dc35969afb0d334145edc4bb3bb898e8bb59c54a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19410 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 diff --git a/README.Rmd b/README.Rmd index f372a0e..7092002 100644 --- a/README.Rmd +++ b/README.Rmd @@ -8,12 +8,16 @@ output: github_document knitr::opts_chunk$set( collapse = TRUE, comment = "#>", - fig.path = "README-" + fig.path = "man/figures/README-", + out.width = "100%" ) ``` # ggplot1 -[![Travis-CI Build Status](https://travis-ci.org/hadley/ggplot1.svg?branch=master)](https://travis-ci.org/hadley/ggplot1) + + +[![R-CMD-check](https://github.com/hadley/ggplot1/actions/workflows/R-CMD-check.yaml/badge.svghttps://github.com/hadley/ggplot1/actions/workflows/R-CMD-check.yaml/badge.svghttps://github.com/hadley/ggplot1/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/hadley/ggplot1/actions/workflows/R-CMD-check.yaml) + ggplot1 is an update of ggplot, the package that preceded ggplot2. ggplot1 is mostly made available out of historical interest, to illustrate how my thinking about API design in R has evolved over the years. I've made a few minor tweaks to the package, mostly fixing small things that obscure the interesting parts of the API. @@ -33,12 +37,12 @@ devtools::install_github("hadley/ggplot1") ```{r ex} library(ggplot1) -mtcars %>% - ggplot(list(x = mpg, y = wt)) %>% +mtcars |> + ggplot(list(x = mpg, y = wt)) |> ggpoint() -mtcars %>% - ggplot(list(x = mpg, y = wt)) %>% - ggpoint(list(colour = gear)) %>% +mtcars |> + ggplot(list(x = mpg, y = wt)) |> + ggpoint(list(colour = gear)) |> scbrewer() ``` diff --git a/README.md b/README.md index 1ec1926..ac6faa8 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,23 @@ -ggplot1 -======= -[![Travis-CI Build Status](https://travis-ci.org/hadley/ggplot1.svg?branch=master)](https://travis-ci.org/hadley/ggplot1) +# ggplot1 -ggplot1 is an update of ggplot, the package that preceded ggplot2. ggplot1 is mostly made available out of historical interest, to illustrate how my thinking about API design in R has evolved over the years. I've made a few minor tweaks to the package, mostly fixing small things that obscure the interesting parts of the API. + -ggplot had 7 CRAN releases starting with 0.2.2 in April 2006, and finishing with 0.4.2 in October 2008. +[![R-CMD-check](https://github.com/hadley/ggplot1/actions/workflows/R-CMD-check.yaml/badge.svghttps://github.com/hadley/ggplot1/actions/workflows/R-CMD-check.yaml/badge.svghttps://github.com/hadley/ggplot1/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/hadley/ggplot1/actions/workflows/R-CMD-check.yaml) + -Installation ------------- +ggplot1 is an update of ggplot, the package that preceded ggplot2. +ggplot1 is mostly made available out of historical interest, to +illustrate how my thinking about API design in R has evolved over the +years. I’ve made a few minor tweaks to the package, mostly fixing small +things that obscure the interesting parts of the API. + +ggplot had 7 CRAN releases starting with 0.2.2 in April 2006, and +finishing with 0.4.2 in October 2008. + +## Installation You can install ggplot1 from github with: @@ -19,25 +26,24 @@ You can install ggplot1 from github with: devtools::install_github("hadley/ggplot1") ``` -Usage ------ +## Usage ``` r library(ggplot1) -mtcars %>% - ggplot(list(x = mpg, y = wt)) %>% +mtcars |> + ggplot(list(x = mpg, y = wt)) |> ggpoint() ``` -![](README-ex-1.png) + ``` r -mtcars %>% - ggplot(list(x = mpg, y = wt)) %>% - ggpoint(list(colour = gear)) %>% +mtcars |> + ggplot(list(x = mpg, y = wt)) |> + ggpoint(list(colour = gear)) |> scbrewer() ``` -![](README-ex-2.png) + diff --git a/man/figures/README-ex-1.png b/man/figures/README-ex-1.png new file mode 100644 index 0000000000000000000000000000000000000000..4851c02197f4b8084a893246a9b2f4edf0aff121 GIT binary patch literal 19478 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 B-W&h` literal 0 HcmV?d00001 diff --git a/man/figures/README-ex-2.png b/man/figures/README-ex-2.png new file mode 100644 index 0000000000000000000000000000000000000000..f0b1ce4c85937a7a2515411d61d621fc3b507039 GIT binary patch literal 20588 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 literal 0 HcmV?d00001 diff --git a/man/gghistogram.Rd b/man/gghistogram.Rd index 0bd444d..9cf5193 100644 --- a/man/gghistogram.Rd +++ b/man/gghistogram.Rd @@ -4,8 +4,7 @@ \alias{gghistogram} \title{Grob function: histogram} \usage{ -gghistogram(plot, aesthetics = list(), scale = "prob", ..., - data = NULL) +gghistogram(plot, aesthetics = list(), scale = "prob", ..., data = NULL) } \arguments{ \item{plot}{the plot object to modify} diff --git a/man/ggopt.Rd b/man/ggopt.Rd index e6a30f4..595e497 100644 --- a/man/ggopt.Rd +++ b/man/ggopt.Rd @@ -7,7 +7,11 @@ \alias{ggopt} \alias{ggtheme} \title{Set global options for ggplot.} -\format{An object of class \code{list} of length 2.} +\format{ +An object of class \code{list} of length 2. + +An object of class \code{list} of length 11. +} \usage{ theme_bw diff --git a/man/ggplot.Rd b/man/ggplot.Rd index 33968e6..6c93df8 100644 --- a/man/ggplot.Rd +++ b/man/ggplot.Rd @@ -7,8 +7,7 @@ \usage{ ggplot(data, ...) -\method{ggplot}{default}(data = NULL, aesthetics = list(), - formula = . ~ ., margins = FALSE, ...) +\method{ggplot}{default}(data = NULL, aesthetics = list(), formula = . ~ ., margins = FALSE, ...) } \arguments{ \item{data}{default data frame} @@ -84,7 +83,7 @@ For scales that control position of the points see: For other scales, see: \itemize{ - \item \code{\link{sccolour}}: colour categorical variables using Brewer colour scales (see also \'code{\link{scfill}}) + \item \code{\link{sccolour}}: colour categorical variables using Brewer colour scales (see also \code{\link{scfill}}) \item \code{\link{scgradient}}: colour continuous scales with a gradient (see also \code{\link{scfillgradient}}) \item \code{\link{schcl}}: map continuous variable to hue, chroma or luminance components (see also \code{\link{scfillhcl}}) \item \code{\link{scmanual}}: no automatic conversion, uses raw values directly @@ -124,18 +123,18 @@ ggpoint(ggplot(tips, formula = . ~ sex, aesthetics = list(y = tip, x = total_bil # Create complex plots from simple components p <- ggplot(tips, formula = smoker ~ sex, aesthetics = list(y = tip, x = total_bill)) -p \%>\% ggpoint() +p |> ggpoint() -p \%>\% - ggpoint() \%>\% +p |> + ggpoint() |> ggsmooth() -p \%>\% - ggpoint() \%>\% +p |> + ggpoint() |> ggsmooth(method = lm, formula = y~x) -p \%>\% - ggpoint() \%>\% +p |> + ggpoint() |> ggabline(slope = c(0.1,0.15,0.2)) (p2 <- ggabline(ggpoint(p, aes = list(colour = tip/total_bill)), slope = c(0.1, 0.15, 0.2))) diff --git a/man/ggsave.Rd b/man/ggsave.Rd index b884224..6711a4c 100644 --- a/man/ggsave.Rd +++ b/man/ggsave.Rd @@ -5,10 +5,17 @@ \title{ggsave Save a ggplot with sensible defaults} \usage{ -ggsave(plot, filename = default_name(plot), - device = default_device(filename), scale = 1, - width = graphics::par("din")[1], height = graphics::par("din")[2], - grid = "normal", dpi = 96, ...) +ggsave( + plot, + filename = default_name(plot), + device = default_device(filename), + scale = 1, + width = graphics::par("din")[1], + height = graphics::par("din")[2], + grid = "normal", + dpi = 96, + ... +) } \arguments{ \item{plot}{plot to save} diff --git a/man/pipe.Rd b/man/pipe.Rd deleted file mode 100644 index ded5583..0000000 --- a/man/pipe.Rd +++ /dev/null @@ -1,12 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utilities.r -\name{\%>\%} -\alias{\%>\%} -\title{Pipe operator} -\usage{ -lhs \%>\% rhs -} -\description{ -See \code{\link[magrittr]{\%>\%}} for more details. -} -\keyword{internal} diff --git a/man/pscontinuous.Rd b/man/pscontinuous.Rd index 36f0cf3..8bf1613 100644 --- a/man/pscontinuous.Rd +++ b/man/pscontinuous.Rd @@ -10,10 +10,27 @@ \alias{trans_inverse} \title{Position: continuous Add a continuous position scale to the plot} -\format{An object of class \code{list} of length 2.} +\format{ +An object of class \code{list} of length 2. + +An object of class \code{list} of length 2. + +An object of class \code{list} of length 2. + +An object of class \code{list} of length 2. + +An object of class \code{list} of length 2. +} \usage{ -pscontinuous(plot, variable = "x", name = "", transform = trans_none, - range = c(NA, NA), expand = c(0.05, 0), breaks = NULL) +pscontinuous( + plot, + variable = "x", + name = "", + transform = trans_none, + range = c(NA, NA), + expand = c(0.05, 0), + breaks = NULL +) trans_none diff --git a/man/sccolour.Rd b/man/sccolour.Rd index eb5a2ed..81205d9 100644 --- a/man/sccolour.Rd +++ b/man/sccolour.Rd @@ -7,14 +7,11 @@ \title{Scale: categorical colour Create a scale for categorical colours.} \usage{ -sccolour(plot, name = "", h = c(0, 360), l = 65, c = 100, - alpha = 1) +sccolour(plot, name = "", h = c(0, 360), l = 65, c = 100, alpha = 1) -sccolor(plot, name = "", h = c(0, 360), l = 65, c = 100, - alpha = 1) +sccolor(plot, name = "", h = c(0, 360), l = 65, c = 100, alpha = 1) -scfill(plot, name = "", h = c(0, 360), l = 75, c = 100, - alpha = 1) +scfill(plot, name = "", h = c(0, 360), l = 75, c = 100, alpha = 1) } \arguments{ \item{plot}{ggplot object} diff --git a/man/scgradient.Rd b/man/scgradient.Rd index ce37067..8e642a2 100644 --- a/man/scgradient.Rd +++ b/man/scgradient.Rd @@ -6,11 +6,25 @@ \title{Scale: colour gradient Scale a continuous variable along a colour gradient.} \usage{ -scgradient(plot, name = "", low = "red", mid = "white", - high = "black", midpoint = 0, range = c(NA, NA)) - -scfillgradient(plot, name = "", low = "red", mid = "white", - high = "black", midpoint = 0, range = c(NA, NA)) +scgradient( + plot, + name = "", + low = "red", + mid = "white", + high = "black", + midpoint = 0, + range = c(NA, NA) +) + +scfillgradient( + plot, + name = "", + low = "red", + mid = "white", + high = "black", + midpoint = 0, + range = c(NA, NA) +) } \arguments{ \item{plot}{plot} diff --git a/man/scmanual.Rd b/man/scmanual.Rd index 74a500c..b51bb44 100644 --- a/man/scmanual.Rd +++ b/man/scmanual.Rd @@ -4,9 +4,14 @@ \alias{scmanual} \title{Scale: manual} \usage{ -scmanual(plot, variable = "x", name = "", breaks = NULL, - labels = as.character(breaks), grob = function(x) grob_point(x, - unique = FALSE)) +scmanual( + plot, + variable = "x", + name = "", + breaks = NULL, + labels = as.character(breaks), + grob = function(x) grob_point(x, unique = FALSE) +) } \arguments{ \item{plot}{plot}