bargraph: Create bar graphs from raw data

Description Usage Arguments Details Value See Also Examples

View source: R/bargraph.R

Description

lattice::barchart() from the lattice package makes bar graphs from pre-tabulated data. Raw data can be tabulated using xtabs(), but the syntax is unusual compared to the other lattice plotting functions. bargraph provides an interface that is consistent with the other lattice functions.

Usage

1
2
3
4
bargraph(x, data = parent.frame(), groups = NULL, horizontal = FALSE,
  origin = 0, ylab = ifelse(horizontal, "", type),
  xlab = ifelse(horizontal, type, ""), type = c("count", "frequency",
  "proportion", "percent"), auto.key = TRUE, scales = list(), ...)

Arguments

x

a formula describing the plot

data

a data frame in which the formula x is evaluated

groups

a variable or expression used for grouping. See lattice::barchart().

horizontal

a logical indicating whether bars should be horizontal

origin

beginning point for bars. For the default behavior used by lattice::barchart() set origin to NULL, but 0 is often a better default. If 0 is not good, perhaps you should use a different kind of plot as the results may be misleading.

ylab

a character vector of length one used for the y-axis label

xlab

a character vector of length one used for the x-axis label

type

one of "frequency", "count", "percent", or "proportion" indicating what type of scale to use. Unique prefixes are sufficient.

auto.key

a logical expression indicating whether a legend should be automatically produced

scales

is a list determining how the x- and y-axes are drawn

...

additional arguments passed to lattice::barchart()

Details

bargraph(formula, data=data, ...) works by creating a new data frame from xtabs(formula, data=data) and then calling lattice::barchart() using modified version of the formula and this new data frame as inputs. This has implications on, for example, conditional plots where one desires to condition on some expression that will be evaluated in data. This typically does not work becuase the required variables do not exist in the output of xtabs. One solution is to first add a new variable to data first and then to condition using this new variable. See the examples.

Value

a trellis object describing the plot

See Also

lattice::barchart()

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
if (require(mosaicData)) {
data(HELPrct)
bargraph( ~ substance, data = HELPrct)
bargraph( ~ substance, data = HELPrct, horizontal = TRUE)
bargraph( ~ substance | sex, groups = homeless, auto.key = TRUE, data = HELPrct)
bargraph( ~ substance, groups = homeless, auto.key=TRUE, 
            data = HELPrct %>% filter(sex == "male"))
HELPrct2 <- mutate(HELPrct, older = age > 40)
bargraph( ~ substance | older, data = HELPrct2)
}

Example output

Loading required package: dplyr

Attaching package: 'dplyr'

The following objects are masked from 'package:stats':

    filter, lag

The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union

Loading required package: lattice
Loading required package: ggformula
Loading required package: ggplot2

New to ggformula?  Try the tutorials: 
	learnr::run_tutorial("introduction", package = "ggformula")
	learnr::run_tutorial("refining", package = "ggformula")
Loading required package: mosaicData
Loading required package: Matrix

The 'mosaic' package masks several functions from core packages in order to add 
additional features.  The original behavior of these functions should not be affected by this.

Note: If you use the Matrix package, be sure to load it BEFORE loading mosaic.

Attaching package: 'mosaic'

The following object is masked from 'package:Matrix':

    mean

The following objects are masked from 'package:dplyr':

    count, do, tally

The following objects are masked from 'package:stats':

    IQR, binom.test, cor, cor.test, cov, fivenum, median, prop.test,
    quantile, sd, t.test, var

The following objects are masked from 'package:base':

    max, mean, min, prod, range, sample, sum

mosaic documentation built on Aug. 27, 2017, 1:03 a.m.