# bargraph: Create bar graphs from raw data In mosaic: Project MOSAIC Statistics and Mathematics Teaching Utilities

## 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 because 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

`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

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

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.

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 Nov. 28, 2017, 5:02 p.m.