Browse Source

geom_lollipop()

pull/9/head
boB Rudis 8 years ago
parent
commit
7265318b49
  1. 3
      DESCRIPTION
  2. 4
      NAMESPACE
  3. 78
      R/geom_lollipop.r
  4. 3
      R/ggalt-package.r
  5. 68
      man/geom_lollipop.Rd
  6. 3
      man/ggalt-ggproto.Rd

3
DESCRIPTION

@ -1,7 +1,7 @@
Package: ggalt
Title: Extra Coordinate Systems, 'Geoms', Statistical Transformations, Scales
and Fonts for 'ggplot2'
Version: 0.2.0.9000
Version: 0.3.0.9000
Maintainer: Bob Rudis <bob@rudis.net>
Authors@R: c(
person("Bob", "Rudis", email = "bob@rudis.net", role = c("aut", "cre")),
@ -59,6 +59,7 @@ Collate:
'geom_xspline2.r'
'ggalt-package.r'
'grob_absolute.r'
'geom_lollipop.r'
'guide_axis.r'
'pokemon.r'
'stateface.r'

4
NAMESPACE

@ -10,6 +10,7 @@ export(Gb)
export(GeomBkde)
export(GeomBkde2d)
export(GeomEncircle)
export(GeomLollipop)
export(GeomStateface)
export(GeomXSpline2)
export(GeomXspline)
@ -25,6 +26,7 @@ export(coord_proj)
export(geom_bkde)
export(geom_bkde2d)
export(geom_encircle)
export(geom_lollipop)
export(geom_stateface)
export(geom_xspline)
export(list_avatars)
@ -64,6 +66,8 @@ importFrom(grid,grobTree)
importFrom(grid,grobWidth)
importFrom(grid,grobX)
importFrom(grid,grobY)
importFrom(grid,pointsGrob)
importFrom(grid,segmentsGrob)
importFrom(grid,textGrob)
importFrom(grid,unit.c)
importFrom(grid,viewport)

78
R/geom_lollipop.r

@ -0,0 +1,78 @@
#' Lollipop charts
#'
#' The lollipop geom is used to create lollipop charts.
#'
#' Lollipop charts are the creation of Andy Cotgreave going back to 2011. They
#' are a combination of a thin segment, starting at with a dot at the top and are a
#' suitable alternative to or replacement for bar charts.
#'
#' The \emph{bubblechart} is a scatterplot with a third variable mapped to
#' the size of points. There are no special names for scatterplots where
#' another variable is mapped to point shape or colour, however.
#'
#' @section Aesthetics:
#' \Sexpr[results=rd,stage=build]{ggplot2:::rd_aesthetics("geom", "point")}
#' @inheritParams ggplot2::layer
#' @param na.rm If \code{FALSE} (the default), removes missing values with
#' a warning. If \code{TRUE} silently removes missing values.
#' @param ... other arguments passed on to \code{\link{layer}}. These are
#' often aesthetics, used to set an aesthetic to a fixed value, like
#' \code{color = "red"} or \code{size = 3}. They may also be parameters
#' to the paired geom/stat.
#' @param point.size the size of the point
#' @param point.colour the colour of the point
#' @inheritParams ggplot2::layer
#' @export
geom_lollipop <- function(mapping = NULL, data = NULL, ...,
point.colour = NULL, point.size = NULL,
na.rm = FALSE, show.legend = NA, inherit.aes = TRUE) {
layer(
data = data,
mapping = mapping,
stat = "identity",
geom = GeomLollipop,
position = "identity",
show.legend = show.legend,
inherit.aes = inherit.aes,
params = list(
na.rm = na.rm,
point.colour = point.colour,
point.size = point.size,
...
)
)
}
#' @rdname ggalt-ggproto
#' @format NULL
#' @usage NULL
#' @export
GeomLollipop <- ggproto("GeomLollipop", Geom,
required_aes = c("x", "y"),
non_missing_aes = c("size", "shape", "point.colour", "point.size"),
default_aes = aes(
shape = 19, colour = "black", size = 0.5, fill = NA,
alpha = NA, stroke = 0.5
),
setup_data = function(data, params) {
transform(data, xend = x, yend = 0)
},
draw_group = function(data, panel_scales, coord,
point.colour = NULL, point.size = NULL) {
points <- data
points$colour <- point.colour %||% data$colour
points$size <- point.size %||% (data$size * 2.5)
gList(
ggplot2::GeomSegment$draw_panel(data, panel_scales, coord),
ggplot2::GeomPoint$draw_panel(points, panel_scales, coord)
)
},
draw_key = draw_key_point
)

3
R/ggalt-package.r

@ -10,7 +10,8 @@
#' @importFrom dplyr filter
#' @importFrom scales rescale expand_range
#' @importFrom grid grobName grobTree unit.c grobHeight grobWidth viewport
#' grid.draw grobX grobY gTree gList textGrob gpar
#' grid.draw grobX grobY gTree gList textGrob gpar pointsGrob
#' segmentsGrob
#' @importFrom gtable gtable_col gtable_height gtable_width gtable_row gtable_col
#' @importFrom RColorBrewer brewer.pal
#' @importFrom extrafont loadfonts fonts ttf_import

68
man/geom_lollipop.Rd

@ -0,0 +1,68 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/geom_lollipop.r
\name{geom_lollipop}
\alias{geom_lollipop}
\title{Lollipop charts}
\usage{
geom_lollipop(mapping = NULL, data = NULL, ..., point.colour = NULL,
point.size = NULL, na.rm = FALSE, show.legend = NA,
inherit.aes = TRUE)
}
\arguments{
\item{mapping}{Set of aesthetic mappings created by \code{\link{aes}} or
\code{\link{aes_}}. If specified and \code{inherit.aes = TRUE} (the
default), it is combined with the default mapping at the top level of the
plot. You must supply \code{mapping} if there is no plot mapping.}
\item{data}{The data to be displayed in this layer. There are three
options:
If \code{NULL}, the default, the data is inherited from the plot
data as specified in the call to \code{\link{ggplot}}.
A \code{data.frame}, or other object, will override the plot
data. All objects will be fortified to produce a data frame. See
\code{\link{fortify}} for which variables will be created.
A \code{function} will be called with a single argument,
the plot data. The return value must be a \code{data.frame.}, and
will be used as the layer data.}
\item{...}{other arguments passed on to \code{\link{layer}}. These are
often aesthetics, used to set an aesthetic to a fixed value, like
\code{color = "red"} or \code{size = 3}. They may also be parameters
to the paired geom/stat.}
\item{point.colour}{the colour of the point}
\item{point.size}{the size of the point}
\item{na.rm}{If \code{FALSE} (the default), removes missing values with
a warning. If \code{TRUE} silently removes missing values.}
\item{show.legend}{logical. Should this layer be included in the legends?
\code{NA}, the default, includes if any aesthetics are mapped.
\code{FALSE} never includes, and \code{TRUE} always includes.}
\item{inherit.aes}{If \code{FALSE}, overrides the default aesthetics,
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}}.}
}
\description{
The lollipop geom is used to create lollipop charts.
}
\details{
Lollipop charts are the creation of Andy Cotgreave going back to 2011. They
are a combination of a thin segment, starting at with a dot at the top and are a
suitable alternative to or replacement for bar charts.
The \emph{bubblechart} is a scatterplot with a third variable mapped to
the size of points. There are no special names for scatterplots where
another variable is mapped to point shape or colour, however.
}
\section{Aesthetics}{
\Sexpr[results=rd,stage=build]{ggplot2:::rd_aesthetics("geom", "point")}
}

3
man/ggalt-ggproto.Rd

@ -1,11 +1,12 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/coord_proj.r, R/geom_ash.r, R/geom_bkde.r, R/geom_bkde2d.r, R/geom_encircle.r, R/geom_xspline.r, R/geom_xspline2.r, R/stateface.r
% Please edit documentation in R/coord_proj.r, R/geom_ash.r, R/geom_bkde.r, R/geom_bkde2d.r, R/geom_encircle.r, R/geom_xspline.r, R/geom_xspline2.r, R/geom_lollipop.r, R/stateface.r
\docType{data}
\name{CoordProj}
\alias{CoordProj}
\alias{GeomBkde}
\alias{GeomBkde2d}
\alias{GeomEncircle}
\alias{GeomLollipop}
\alias{GeomStateface}
\alias{GeomXSpline2}
\alias{GeomXspline}

Loading…
Cancel
Save