Browse Source

synch with upstream

Merge remote-tracking branch 'upstream/master'

# Conflicts:
#	DESCRIPTION
#	README.md
#	README_figs/README-bkde2d-2.png
#	README_figs/README-bkde_ash-5.png
#	README_figs/README-bkde_ash-6.png
#	README_figs/README-coord_proj-1.png
#	README_figs/README-dumbbell2-1.png
#	README_figs/README-horizon-1.png
#	README_figs/README-splines-1.png
#	README_figs/README-splines-2.png
#	README_figs/README-splines-3.png
#	README_figs/README-splines-4.png
#	README_figs/README-splines-5.png
#	README_figs/README-splines-6.png
#	README_figs/README-splines-7.png
#	README_figs/README-splines-8.png
#	man/geom_dumbbell.Rd
pull/50/head
yoni sidi 3 years ago
parent
commit
41df89d628
21 changed files with 351 additions and 85 deletions
  1. +2
    -4
      .Rbuildignore
  2. +6
    -2
      DESCRIPTION
  3. +2
    -0
      NAMESPACE
  4. +1
    -1
      NEWS.md
  5. +41
    -46
      R/formatters.r
  6. +20
    -3
      R/geom_dumbbell.R
  7. +0
    -3
      R/geom_ubar.r
  8. +9
    -5
      R/geom_xspline.r
  9. +122
    -0
      R/position-dodgev.R
  10. +2
    -2
      R/stat-stepribbon.r
  11. +1
    -1
      R/stateface.r
  12. +4
    -2
      README.Rmd
  13. +7
    -4
      README.md
  14. +45
    -0
      appveyor.yml
  15. +8
    -5
      man/byte_format.Rd
  16. +20
    -2
      man/geom_dumbbell.Rd
  17. +3
    -0
      man/geom_spikelines.Rd
  18. +0
    -4
      man/geom_ubar.Rd
  19. +39
    -0
      man/position-dodgev.Rd
  20. +1
    -1
      man/stat_stepribbon.Rd
  21. +18
    -0
      vignettes/ggalt_examples.Rmd

+ 2
- 4
.Rbuildignore View File

@ -1,10 +1,8 @@
^.*\.Rproj$
^\.Rproj\.user$
^README\.Rmd$
^README-.*\.png$
^README.*$
^\.travis\.yml$
^CONDUCT\.md$
^README_figs
^README\.html$
^cran-comments\.md$
^revdep$
^appveyor\.yml$

+ 6
- 2
DESCRIPTION View File

@ -4,7 +4,8 @@ Title: Extra Coordinate Systems, 'Geoms', Statistical Transformations, Scales
Version: 0.6.1
Maintainer: Bob Rudis <bob@rud.is>
Authors@R: c(
person("Bob", "Rudis", email = "bob@rud.is", role = c("aut", "cre")),
person("Bob", "Rudis", email = "bob@rud.is", role = c("aut", "cre"),
comment = c(ORCID = "0000-0001-5670-2640")),
person("Ben", "Bolker", comment="Encircling & additional splines", role = c("aut", "ctb")),
person("Ben", "Marwick", comment="General codebase cleanup", role = c("ctb")),
person("Jan", "Schulz", comment="Annotations", role = c("aut", "ctb")),
@ -12,7 +13,8 @@ Authors@R: c(
person("ProPublica", role="dtc", comment="StateFace font"),
person("Aditya", "Kothari", role=c("aut", "ctb"), comment="Core functionality of horizon plots"),
person("Ather", role="dtc", comment="Core functionality of horizon plots"),
person("Jonathan","Sidi", role=c("aut","ctb"), comment="Annotation ticks")
person("Jonathan","Sidi", role=c("aut","ctb"), comment="Annotation ticks"),
person("Tarcisio","Fedrizzi", role="ctb", comment="Bytes formatter")
)
Description: A compendium of new geometries, coordinate systems, statistical
transformations, scales and fonts for 'ggplot2', including splines, 1d and 2d densities,
@ -41,6 +43,7 @@ Imports:
utils,
graphics,
grDevices,
plyr,
dplyr,
RColorBrewer,
KernSmooth,
@ -62,6 +65,7 @@ Collate:
'coord_proj.r'
'formatters.r'
'fortify.r'
'position-dodgev.R'
'geom2plotly.r'
'geom_ash.r'
'geom_bkde.r'


+ 2
- 0
NAMESPACE View File

@ -23,6 +23,7 @@ export(GeomXSpline2)
export(GeomXspline)
export(Kb)
export(Mb)
export(PositionDodgev)
export(StatAsh)
export(StatBkde)
export(StatBkde2d)
@ -46,6 +47,7 @@ export(geom_stateface)
export(geom_ubar)
export(geom_xspline)
export(load_stateface)
export(position_dodgev)
export(show_stateface)
export(stat_ash)
export(stat_bkde)


+ 1
- 1
NEWS.md View File

@ -1,6 +1,6 @@
0.5.0
=====================
* `geom_ubar()` : unform bar charts based on `geom_segment()`
* `geom_ubar()` : uniform bar charts based on `geom_segment()`
0.4.0
=====================


+ 41
- 46
R/formatters.r View File

@ -1,9 +1,9 @@
#' Bytes formatter: convert to byte measurement and display symbol.
#'
#' @return a function with three parameters, \code{x}, a numeric vector that
#' returns a character vector, \code{symbol} the byte symbol (e.g. "\code{Kb}")
#' desired and the measurement \code{units} (traditional \code{binary} or
#' \code{si} for ISI metric units).
#' returns a character vector, \code{symbol} a single or a vector of byte
#' symbol(s) (e.g. "\code{Kb}") desired and the measurement \code{units}
#' (traditional \code{binary} or \code{si} for ISI metric units).
#' @param x a numeric vector to format
#' @param symbol byte symbol to use. If "\code{auto}" the symbol used will be
#' determined by the maximum value of \code{x}. Valid symbols are
@ -12,6 +12,8 @@
#' equivalents and "\code{iB}" equivalents.
#' @param units which unit base to use, "\code{binary}" (1024 base) or
#' "\code{si}" (1000 base) for ISI units.
#' @param only_highest Whether to use the unit of the highest number or
#' each number uses its own unit.
#' @references Units of Information (Wikipedia) :
#' \url{http://en.wikipedia.org/wiki/Units_of_information}
#' @export
@ -21,8 +23,8 @@
#' Kb(sample(3000000000, 10))
#' Mb(sample(3000000000, 10))
#' Gb(sample(3000000000, 10))
byte_format <- function(symbol="auto", units="binary") {
function(x) bytes(x, symbol, units)
byte_format <- function (symbol = "auto", units = "binary", only_highest = TRUE) {
function(x) bytes(x, symbol, units, only_highest)
}
#' @export
@ -39,47 +41,40 @@ Gb <- byte_format("Gb", "binary")
#' @export
#' @rdname byte_format
bytes <- function(x, symbol="auto", units=c("binary", "si")) {
symbol <- match.arg(symbol, c("auto",
"b", "Kb", "Mb", "Gb", "Tb", "Pb", "Eb", "Zb", "Yb",
"B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB",
"KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"))
units <- match.arg(units, c("binary", "si"))
base <- switch(units, `binary`=1024, `si`=1000)
if (symbol == "auto") {
symbol <-
if (max(x) >= (base^5)) { "Pb" }
else if (max(x) >= (base^4)) { "Tb" }
else if (max(x) >= (base^3)) { "Gb" }
else if (max(x) >= (base^2)) { "Kb" }
else if (max(x) >= (base^1)) { "Mb" }
else { "b" }
bytes <- function (x, symbol = "auto", units = c("binary", "si"),
only_highest = FALSE) {
bin_names <- c("bytes", "Kb", "Mb", "Gb", "Tb", "Pb", "Eb", "Zb", "Yb")
si_names <- c("bytes", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB")
units <- match.arg(units, c("binary", "si"))
valid_names <- c("auto", if (units == "binary") {
c(bin_names, toupper(bin_names))
} else {
si_names
})
symbol <- valid_names[pmatch(symbol, valid_names, duplicates.ok = TRUE)]
if (any(is.na(symbol))) {
stop(gettextf("Symbol must be one of %s", paste(dQuote(valid_names), collapse = ", ")))
}
base <- switch(units, binary = 1024, si = 1000)
out_names <- switch(units, binary = bin_names, si = si_names)
sym_len <- length(symbol)
inp_len <- length(x)
if (sym_len == 1) {
symbol <- rep(symbol, inp_len)
sym_len <- inp_len
}
if (sym_len != inp_len) {
stop("Symbols argument must be either long 1 or of the same length as the input vector.")
}
symbol <- ifelse(symbol == "auto",
pmax(floor(log(x, base)), 0),
match(tolower(symbol), tolower(out_names)) - 1)
if (only_highest) {
symbol <- max(symbol, na.rm = TRUE)
}
res <- paste(scales::comma(round(x / base^symbol, 1L)),
out_names[symbol + 1])
ifelse(!is.na(x), res, x)
}
switch(symbol,
"b" =, "B" = paste(x, "bytes"),
"Kb" =, "KB" = paste(scales::comma(round(x/(base^1), 1L)), "Kb"),
"Mb" =, "MB" = paste(scales::comma(round(x/(base^2), 1L)), "Mb"),
"Gb" =, "GB" = paste(scales::comma(round(x/(base^3), 1L)), "Gb"),
"Tb" =, "TB" = paste(scales::comma(round(x/(base^4), 1L)), "Tb"),
"Pb" =, "PB" = paste(scales::comma(round(x/(base^5), 1L)), "Pb"),
"Eb" =, "EB" = paste(scales::comma(round(x/(base^6), 1L)), "Eb"),
"Zb" =, "ZB" = paste(scales::comma(round(x/(base^7), 1L)), "Zb"),
"Yb" =, "YB" = paste(scales::comma(round(x/(base^8), 1L)), "Yb"),
"KiB" = paste(scales::comma(round(x/(base^1), 1L)), "KiB"),
"MiB" = paste(scales::comma(round(x/(base^2), 1L)), "MiB"),
"GiB" = paste(scales::comma(round(x/(base^3), 1L)), "GiB"),
"TiB" = paste(scales::comma(round(x/(base^4), 1L)), "TiB"),
"PiB" = paste(scales::comma(round(x/(base^5), 1L)), "PiB"),
"EiB" = paste(scales::comma(round(x/(base^6), 1L)), "EiB"),
"ZiB" = paste(scales::comma(round(x/(base^7), 1L)), "ZiB"),
"YiB" = paste(scales::comma(round(x/(base^8), 1L)), "YiB")
)
}

+ 20
- 3
R/geom_dumbbell.R View File

@ -1,4 +1,4 @@
#' Dumbell charts
#' Dumbbell charts
#'
#' The dumbbell geom is used to create dumbbell charts.
#'
@ -20,6 +20,8 @@
#' @param colour_xend the colour of the end point
#' @param dot_guide if \code{TRUE}, a leading dotted line will be placed before the left-most dumbbell point
#' @param dot_guide_size,dot_guide_colour singe-value aesthetics for \code{dot_guide}
#' @param position Position adjustment, either as a string, or the result of a
#' call to a position adjustment function.
#' @inheritParams ggplot2::layer
#' @export
#' @examples
@ -34,19 +36,34 @@
#' labs(x=NULL, y=NULL, title="ggplot2 geom_dumbbell with dot guide") +
#' theme_minimal() +
#' theme(panel.grid.major.x=element_line(size=0.05))
#'
#' ## with vertical dodging
#' df2 <- data.frame(trt = c(LETTERS[1:5], "D"),
#' l = c(20, 40, 10, 30, 50, 40),
#' r = c(70, 50, 30, 60, 80, 70))
#'
#' ggplot(df2, aes(y=trt, x=l, xend=r)) +
#' geom_dumbbell(size=3, color="#e3e2e1",
#' colour_x = "#5b8124", colour_xend = "#bad744",
#' dot_guide=TRUE, dot_guide_size=0.25,
#' position=position_dodgev(height=0.4)) +
#' labs(x=NULL, y=NULL, title="ggplot2 geom_dumbbell with dot guide") +
#' theme_minimal() +
#' theme(panel.grid.major.x=element_line(size=0.05))
geom_dumbbell <- function(mapping = NULL, data = NULL, ...,
colour_x = NULL, size_x = NULL,
colour_xend = NULL, size_xend = NULL,
dot_guide = FALSE, dot_guide_size = NULL,
dot_guide_colour = NULL,
na.rm = FALSE, show.legend = NA, inherit.aes = TRUE) {
na.rm = FALSE, show.legend = NA, inherit.aes = TRUE,
position = "identity") {
layer(
data = data,
mapping = mapping,
stat = "identity",
geom = GeomDumbbell,
position = "identity",
position = position,
show.legend = show.legend,
inherit.aes = inherit.aes,
params = list(


+ 0
- 3
R/geom_ubar.r View File

@ -5,9 +5,6 @@
#' constant without any tricks and you have granular control over the
#' segment width. I decided it was time to make a `geom`.
#'
#' Dumbbell dot plots — dot plots with two or more series of data — are an
#' alternative to the clustered bar chart or slope graph.
#'
#' @md
#' @section Aesthetics:
#' `geom_ubar`` understands the following aesthetics (required aesthetics are in bold):


+ 9
- 5
R/geom_xspline.r View File

@ -132,11 +132,13 @@ geom_xspline <- function(mapping = NULL, data = NULL, stat = "xspline",
position = position,
show.legend = show.legend,
inherit.aes = inherit.aes,
params = list(spline_shape=spline_shape,
open=open,
na.rm = na.rm,
rep_ends=rep_ends,
...)
params = list(
spline_shape = spline_shape,
open = open,
na.rm = na.rm,
rep_ends = rep_ends,
...
)
)
}
@ -188,6 +190,7 @@ StatXspline <- ggproto("StatXspline", Stat,
compute_group = function(self, data, scales, params,
spline_shape=-0.25, open=TRUE, rep_ends=TRUE) {
tf <- tempfile(fileext=".png")
png(tf)
plot.new()
@ -197,4 +200,5 @@ StatXspline <- ggproto("StatXspline", Stat,
data.frame(x=tmp$x, y=tmp$y)
}
)

+ 122
- 0
R/position-dodgev.R View File

@ -0,0 +1,122 @@
#' Vertically dodge position
#' @rdname position-dodgev
#' @author @@ggstance authors
#' @note position-dodgev(): unmodified from lionel-/ggstance/R/position-dodgev.R 73f521384ae8ea277db5f7d5a2854004aa18f947
#' @export
position_dodgev <- function(height = NULL) {
ggplot2::ggproto(NULL, PositionDodgev, height = height)
}
#' @rdname position-dodgev
#' @author @@ggstance authors
#' @note PositionDodgev(): based on from lionel-/ggstance/R/position-dodgev.R 73f521384ae8ea277db5f7d5a2854004aa18f947
#' @format NULL
#' @usage NULL
#' @export
PositionDodgev <- ggplot2::ggproto("PositionDodgev", ggplot2::Position,
required_aes = "y",
height = NULL,
setup_params = function(self, data) {
if (is.null(data$ymin) && is.null(data$ymax) && is.null(self$height)) {
warning("Height not defined. Set with `position_dodgev(height = ?)`",
call. = FALSE)
}
list(height = self$height)
},
compute_panel = function(data, params, scales) {
collidev(data, params$height, "position_dodgev", pos_dodgev, check.height = FALSE)
}
)
#' @rdname position-dodgev
#' @author @@ggstance authors
#' @note pos_dodgev(): unmodified from lionel-/ggstance/R/position-dodgev.R 73f521384ae8ea277db5f7d5a2854004aa18f947
pos_dodgev <- function(df, height) {
n <- length(unique(df$group))
if (n == 1) return(df)
if (!all(c("ymin", "ymax") %in% names(df))) {
df$ymin <- df$y
df$ymax <- df$y
}
d_height <- max(df$ymax - df$ymin)
# df <- data.frame(n = c(2:5, 10, 26), div = c(4, 3, 2.666666, 2.5, 2.2, 2.1))
# ggplot(df, aes(n, div)) + geom_point()
# Have a new group index from 1 to number of groups.
# This might be needed if the group numbers in this set don't include all of 1:n
groupidx <- match(df$group, sort(unique(df$group)))
# Find the center for each group, then use that to calculate ymin and lmax
df$y <- df$y + height * ((groupidx - 0.5) / n - .5)
df$ymin <- df$y - d_height / n / 2
df$ymax <- df$y + d_height / n / 2
df
}
#' @rdname position-dodgev
#' @author @@ggstance authors
#' @note collidev(): based on lionel-/ggstance/R/position.R 73f521384ae8ea277db5f7d5a2854004aa18f947
collidev <- function(data, height = NULL, name, strategy, ..., check.height = TRUE, reverse = FALSE) {
# Determine height
if (!is.null(height)) {
# Width set manually
if (!(all(c("ymin", "ymax") %in% names(data)))) {
data$ymin <- data$y - height / 2
data$ymax <- data$y + height / 2
}
} else {
if (!(all(c("ymin", "ymax") %in% names(data)))) {
data$ymin <- data$y
data$ymax <- data$y
}
# Width determined from data, must be floating point constant
heights <- unique(data$ymax - data$ymin)
heights <- heights[!is.na(heights)]
# # Suppress warning message since it's not reliable
# if (!zero_range(range(heights))) {
# warning(name, " requires constant height: output may be incorrect",
# call. = FALSE)
# }
height <- heights[1]
}
# Reorder by x position, then on group. The default stacking order reverses
# the group in order to match the legend order.
if (reverse) {
data <- data[order(data$ymin, data$group), ]
} else {
data <- data[order(data$ymin, -data$group), ]
}
# Check for overlap
intervals <- as.numeric(t(unique(data[c("ymin", "ymax")])))
intervals <- intervals[!is.na(intervals)]
if (length(unique(intervals)) > 1 & any(diff(scale(intervals)) < -1e-6)) {
warning(name, " requires non-overlapping y intervals", call. = FALSE)
# This is where the algorithm from [L. Wilkinson. Dot plots.
# The American Statistician, 1999.] should be used
}
data$group <- seq_len(nrow(data)) ## reset grouping
if (!is.null(data$xmax)) {
plyr::ddply(data, "ymin", strategy, ..., height = height)
} else if (!is.null(data$x)) {
data$xmax <- data$x
data <- plyr::ddply(data, "ymin", strategy, ..., height = height)
data$x <- data$xmax
data$yend <- data$y ## ALLOW FOR A YEND COLUMN
data
} else {
stop("Neither x nor xmax defined")
}
}

+ 2
- 2
R/stat-stepribbon.r View File

@ -5,9 +5,9 @@
#' @md
#' @inheritParams ggplot2::geom_ribbon
#' @param geom which geom to use; defaults to "`ribbon`"
#' @param direction \code{hv} for horizontal-veritcal steps, `vh`` for
#' @param direction `hv` for horizontal-veritcal steps, `vh` for
#' vertical-horizontal steps
#' @references \url{https://groups.google.com/forum/?fromgroups=#!topic/ggplot2/9cFWHaH1CPs}
#' @references [https://groups.google.com/forum/?fromgroups=#!topic/ggplot2/9cFWHaH1CPs]()
#' @export
#' @examples
#' x <- 1:10


+ 1
- 1
R/stateface.r View File

@ -48,7 +48,7 @@ load_stateface <- function() {
system.file("fonts/", package="ggalt"),
prompt=FALSE, pattern="*.ttf", recursive=FALSE)))
}
tmp <- capture.output(suppressWarnings(extrafont::loadfonts(quiet=TRUE)))
tmp <- utils::capture.output(suppressWarnings(extrafont::loadfonts(quiet=TRUE)))
}
#' Use ProPublica's StateFace font in ggplot2 plots


+ 4
- 2
README.Rmd View File

@ -10,6 +10,7 @@ knitr::opts_chunk$set(collapse=TRUE, comment="##", fig.retina=2, fig.path = "REA
[![Project Status: Active - The project has reached a stable, usable state and is being actively developed.](http://www.repostatus.org/badges/0.1.0/active.svg)](http://www.repostatus.org/#active)
[![Travis-CI Build Status](https://travis-ci.org/hrbrmstr/ggalt.svg?branch=master)](https://travis-ci.org/hrbrmstr/ggalt)
[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/hrbrmstr/ggalt?branch=master&svg=true)](https://ci.appveyor.com/project/hrbrmstr/ggalt)
[![CRAN_Status_Badge](http://www.r-pkg.org/badges/version/ggalt)](https://CRAN.R-project.org/package=ggalt)
![downloads](http://cranlogs.r-pkg.org/badges/grand-total/ggalt)
@ -25,8 +26,9 @@ The following functions are implemented:
- `geom_xspline` : Connect control points/observations with an X-spline
- `stat_xspline` : Connect control points/observations with an X-spline
- `geom_bkde` : Display a smooth density estimate (uses `KernSmooth::bkde`)
- `geom_stateface`: Use ProPublica's StateFace font in ggplot2 plots- `stat_bkde` : Display a smooth density estimate (uses `KernSmooth::bkde`)
- `geom_bkde2d` : Contours from a 2d density estimate. (uses `KernSmooth::bkde2D`)
- `geom_stateface`: Use ProPublica's StateFace font in ggplot2 plots
- `geom_bkde2d` : Contours from a 2d density estimate. (uses `KernSmooth::bkde2D`)
- `stat_bkde` : Display a smooth density estimate (uses `KernSmooth::bkde`)
- `stat_bkde2d` : Contours from a 2d density estimate. (uses `KernSmooth::bkde2D`)
- `stat_ash` : Compute and display a univariate averaged shifted histogram (polynomial kernel) (uses `ash::ash1`/`ash::bin1`)
- `geom_encircle`: Automatically enclose points in a polygon


+ 7
- 4
README.md View File

@ -6,6 +6,8 @@ state and is being actively
developed.](http://www.repostatus.org/badges/0.1.0/active.svg)](http://www.repostatus.org/#active)
[![Travis-CI Build
Status](https://travis-ci.org/hrbrmstr/ggalt.svg?branch=master)](https://travis-ci.org/hrbrmstr/ggalt)
[![AppVeyor Build
Status](https://ci.appveyor.com/api/projects/status/github/hrbrmstr/ggalt?branch=master&svg=true)](https://ci.appveyor.com/project/hrbrmstr/ggalt)
[![CRAN\_Status\_Badge](http://www.r-pkg.org/badges/version/ggalt)](https://CRAN.R-project.org/package=ggalt)
![downloads](http://cranlogs.r-pkg.org/badges/grand-total/ggalt)
@ -36,13 +38,14 @@ The following functions are implemented:
- `geom_bkde` : Display a smooth density estimate (uses
`KernSmooth::bkde`)
- `geom_stateface`: Use ProPublica’s StateFace font in ggplot2 plots-
`stat_bkde` : Display a smooth density estimate (uses
`KernSmooth::bkde`)
- `geom_stateface`: Use ProPublica’s StateFace font in ggplot2 plots
- `geom_bkde2d` : Contours from a 2d density estimate. (uses
`KernSmooth::bkde2D`)
- `stat_bkde` : Display a smooth density estimate (uses
`KernSmooth::bkde`)
- `stat_bkde2d` : Contours from a 2d density estimate. (uses
`KernSmooth::bkde2D`)
@ -86,7 +89,7 @@ library(ggalt)
# current verison
packageVersion("ggalt")
## [1] '0.5.0'
## [1] '0.6.1'
set.seed(1492)
dat <- data.frame(x=c(1:10, 1:10, 1:10),


+ 45
- 0
appveyor.yml View File

@ -0,0 +1,45 @@
# DO NOT CHANGE the "init" and "install" sections below
# Download script file from GitHub
init:
ps: |
$ErrorActionPreference = "Stop"
Invoke-WebRequest http://raw.github.com/krlmlr/r-appveyor/master/scripts/appveyor-tool.ps1 -OutFile "..\appveyor-tool.ps1"
Import-Module '..\appveyor-tool.ps1'
install:
ps: Bootstrap
cache:
- C:\RLibrary
# Adapt as necessary starting from here
build_script:
- travis-tool.sh install_deps
test_script:
- travis-tool.sh run_tests
on_failure:
- 7z a failure.zip *.Rcheck\*
- appveyor PushArtifact failure.zip
artifacts:
- path: '*.Rcheck\**\*.log'
name: Logs
- path: '*.Rcheck\**\*.out'
name: Logs
- path: '*.Rcheck\**\*.fail'
name: Logs
- path: '*.Rcheck\**\*.Rout'
name: Logs
- path: '\*_*.tar.gz'
name: Bits
- path: '\*_*.zip'
name: Bits

+ 8
- 5
man/byte_format.Rd View File

@ -8,7 +8,7 @@
\alias{bytes}
\title{Bytes formatter: convert to byte measurement and display symbol.}
\usage{
byte_format(symbol = "auto", units = "binary")
byte_format(symbol = "auto", units = "binary", only_highest = TRUE)
Kb(x)
@ -16,7 +16,7 @@ Mb(x)
Gb(x)
bytes(x, symbol = "auto", units = c("binary", "si"))
bytes(x, symbol = "auto", units = c("binary", "si"), only_highest = FALSE)
}
\arguments{
\item{symbol}{byte symbol to use. If "\code{auto}" the symbol used will be
@ -28,13 +28,16 @@ equivalents and "\code{iB}" equivalents.}
\item{units}{which unit base to use, "\code{binary}" (1024 base) or
"\code{si}" (1000 base) for ISI units.}
\item{only_highest}{Whether to use the unit of the highest number or
each number uses its own unit.}
\item{x}{a numeric vector to format}
}
\value{
a function with three parameters, \code{x}, a numeric vector that
returns a character vector, \code{symbol} the byte symbol (e.g. "\code{Kb}")
desired and the measurement \code{units} (traditional \code{binary} or
\code{si} for ISI metric units).
returns a character vector, \code{symbol} a single or a vector of byte
symbol(s) (e.g. "\code{Kb}") desired and the measurement \code{units}
(traditional \code{binary} or \code{si} for ISI metric units).
}
\description{
Bytes formatter: convert to byte measurement and display symbol.


+ 20
- 2
man/geom_dumbbell.Rd View File

@ -2,12 +2,13 @@
% Please edit documentation in R/geom_dumbbell.R
\name{geom_dumbbell}
\alias{geom_dumbbell}
\title{Dumbell charts}
\title{Dumbbell charts}
\usage{
geom_dumbbell(mapping = NULL, data = NULL, ..., colour_x = NULL,
size_x = NULL, colour_xend = NULL, size_xend = NULL,
dot_guide = FALSE, dot_guide_size = NULL, dot_guide_colour = NULL,
na.rm = FALSE, show.legend = NA, inherit.aes = TRUE)
na.rm = FALSE, show.legend = NA, inherit.aes = TRUE,
position = "identity")
}
\arguments{
\item{mapping}{Set of aesthetic mappings created by \code{\link[=aes]{aes()}} or
@ -59,6 +60,9 @@ display.}
rather than combining with them. This is most useful for helper functions
that define both data and aesthetics and shouldn't inherit behaviour from
the default plot specification, e.g. \code{\link[=borders]{borders()}}.}
\item{position}{Position adjustment, either as a string, or the result of a
call to a position adjustment function.}
}
\description{
The dumbbell geom is used to create dumbbell charts.
@ -84,4 +88,18 @@ ggplot(df, aes(y=trt, x=l, xend=r)) +
labs(x=NULL, y=NULL, title="ggplot2 geom_dumbbell with dot guide") +
theme_minimal() +
theme(panel.grid.major.x=element_line(size=0.05))
## with vertical dodging
df2 <- data.frame(trt = c(LETTERS[1:5], "D"),
l = c(20, 40, 10, 30, 50, 40),
r = c(70, 50, 30, 60, 80, 70))
ggplot(df2, aes(y=trt, x=l, xend=r)) +
geom_dumbbell(size=3, color="#e3e2e1",
colour_x = "#5b8124", colour_xend = "#bad744",
dot_guide=TRUE, dot_guide_size=0.25,
position=position_dodgev(height=0.4)) +
labs(x=NULL, y=NULL, title="ggplot2 geom_dumbbell with dot guide") +
theme_minimal() +
theme(panel.grid.major.x=element_line(size=0.05))
}

+ 3
- 0
man/geom_spikelines.Rd View File

@ -80,3 +80,6 @@ ggrepel::geom_label_repel(data = mtcars[mtcars$carb==4,],aes(label = name))
}
}
\author{
Jonathan Sidi
}

+ 0
- 4
man/geom_ubar.Rd View File

@ -59,10 +59,6 @@ I've been using \code{geom_segment} more to make "bar" charts, setting
constant without any tricks and you have granular control over the
segment width. I decided it was time to make a \code{geom}.
}
\details{
Dumbbell dot plots — dot plots with two or more series of data — are an
alternative to the clustered bar chart or slope graph.
}
\section{Aesthetics}{
`geom_ubar`` understands the following aesthetics (required aesthetics are in bold):


+ 39
- 0
man/position-dodgev.Rd View File

@ -0,0 +1,39 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/position-dodgev.R
\docType{data}
\name{position_dodgev}
\alias{position_dodgev}
\alias{PositionDodgev}
\alias{pos_dodgev}
\alias{collidev}
\title{Vertically dodge position}
\usage{
position_dodgev(height = NULL)
pos_dodgev(df, height)
collidev(data, height = NULL, name, strategy, ..., check.height = TRUE,
reverse = FALSE)
}
\description{
Vertically dodge position
}
\note{
position-dodgev(): unmodified from lionel-/ggstance/R/position-dodgev.R 73f521384ae8ea277db5f7d5a2854004aa18f947
PositionDodgev(): based on from lionel-/ggstance/R/position-dodgev.R 73f521384ae8ea277db5f7d5a2854004aa18f947
pos_dodgev(): unmodified from lionel-/ggstance/R/position-dodgev.R 73f521384ae8ea277db5f7d5a2854004aa18f947
collidev(): based on lionel-/ggstance/R/position.R 73f521384ae8ea277db5f7d5a2854004aa18f947
}
\author{
@ggstance authors
@ggstance authors
@ggstance authors
@ggstance authors
}
\keyword{datasets}

+ 1
- 1
man/stat_stepribbon.Rd View File

@ -47,7 +47,7 @@ rather than combining with them. This is most useful for helper functions
that define both data and aesthetics and shouldn't inherit behaviour from
the default plot specification, e.g. \code{\link[=borders]{borders()}}.}
\item{direction}{\code{hv} for horizontal-veritcal steps, `vh`` for
\item{direction}{\code{hv} for horizontal-veritcal steps, \code{vh} for
vertical-horizontal steps}
\item{...}{Other arguments passed on to \code{\link[=layer]{layer()}}. These are


+ 18
- 0
vignettes/ggalt_examples.Rmd View File

@ -263,3 +263,21 @@ ggplot(df, aes(y=trt, x=l, xend=r)) +
theme(panel.grid.major.x=element_line(size=0.05)) +
theme(panel.grid.major.y=element_blank())
```
with optional vertical dodging
```{r dumbbellv, message=FALSE, fig.width=7, fig.height=2.5}
df2 <- data.frame(trt = c(LETTERS[1:5], "D"),
l = c(20, 40, 10, 30, 50, 40),
r = c(70, 50, 30, 60, 80, 70))
ggplot(df2, aes(y=trt, x=l, xend=r)) +
geom_dumbbell(size=3, color="#e3e2e1",
colour_x = "#5b8124", colour_xend = "#bad744",
dot_guide=TRUE, dot_guide_size=0.25,
position=position_dodgev(height=0.8)) +
labs(x=NULL, y=NULL, title="ggplot2 geom_dumbbell with dot guide") +
theme_minimal() +
theme(panel.grid.major.x=element_line(size=0.05))
```

Loading…
Cancel
Save