Title: | Letter Value 'Boxplots' |
Version: | 0.2.1 |
Description: | Implements the letter value 'boxplot' which extends the standard 'boxplot' to deal with both larger and smaller number of data points by dynamically selecting the appropriate number of letter values to display. |
License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
Depends: | R (≥ 2.14) |
Imports: | ggplot2 (≥ 3.3.0), grid, RColorBrewer, tibble |
Suggests: | depth |
Encoding: | UTF-8 |
LazyData: | true |
LazyDataCompression: | xz |
RoxygenNote: | 7.2.1 |
NeedsCompilation: | no |
Packaged: | 2022-09-25 15:17:17 UTC; hadleywickham |
Author: | Hadley Wickham [aut, cre], Heike Hofmann [aut] |
Maintainer: | Hadley Wickham <hadley@rstudio.com> |
Repository: | CRAN |
Date/Publication: | 2022-09-25 17:10:02 UTC |
lvplot: Letter Value 'Boxplots'
Description
Implements the letter value 'boxplot' which extends the standard 'boxplot' to deal with both larger and smaller number of data points by dynamically selecting the appropriate number of letter values to display.
Author(s)
Maintainer: Hadley Wickham hadley@rstudio.com
Authors:
Heike Hofmann hofmann@iastate.edu
Side-by-side LV boxplots with base graphics
Description
An extension of standard boxplots which draws k letter statistics. Conventional boxplots (Tukey 1977) are useful displays for conveying rough information about the central 50% of the data and the extent of the data.
Usage
LVboxplot(x, ...)
## S3 method for class 'formula'
LVboxplot(
formula,
alpha = 0.95,
k = NULL,
perc = NULL,
horizontal = TRUE,
xlab = NULL,
ylab = NULL,
col = "grey30",
bg = "grey90",
width = 0.9,
width.method = "linear",
median.col = "grey10",
...
)
## S3 method for class 'numeric'
LVboxplot(
x,
alpha = 0.95,
k = NULL,
perc = NULL,
horizontal = TRUE,
xlab = NULL,
ylab = NULL,
col = "grey30",
bg = "grey90",
width = 0.9,
width.method = "linear",
median.col = "grey10",
...
)
Arguments
x |
numeric vector of data |
... |
passed onto |
formula |
a plotting formula of the form |
alpha |
if supplied, depth k is calculated such that (1- |
k |
number of letter value statistics used |
perc |
if supplied, depth k is adjusted such that |
horizontal |
display horizontally (TRUE) or vertically (FALSE) |
xlab |
x axis label |
ylab |
y axis label |
col |
vector of colours to use |
bg |
background colour |
width |
maximum height/width of box |
width.method |
one of 'linear', 'height' or 'area'. Methods 'height' and 'area' ensure that these dimension are proportional to the number of observations within each box. |
median.col |
colour of the line for the median |
Details
For moderate-sized data sets (n < 1000
), detailed estimates of tail
behavior beyond the quartiles may not be trustworthy, so the information
provided by boxplots is appropriately somewhat vague beyond the quartiles,
and the expected number of “outliers” and “far-out” values for a
Gaussian sample of size n
is often less than 10 (Hoaglin, Iglewicz,
and Tukey 1986). Large data sets (n \approx 10,000-100,000
) afford
more precise estimates of quantiles in the tails beyond the quartiles and
also can be expected to present a large number of “outliers” (about
0.4 + 0.007 n
).
The letter-value box plot addresses both these shortcomings: it conveys
more detailed information in the tails using letter values, only out to the
depths where the letter values are reliable estimates of their
corresponding quantiles (corresponding to tail areas of roughly
2^{-i}
); “outliers” are defined as a function of the most extreme
letter value shown. All aspects shown on the letter-value boxplot are
actual observations, thus remaining faithful to the principles that
governed Tukey's original boxplot.
Examples
n <- 10
oldpar <- par()
par(mfrow=c(4,2), mar=c(3,3,3,3))
for (i in 1:4) {
x <- rexp(10 ^ (i + 1))
boxplot(x, col = "grey", horizontal = TRUE)
title(paste("Exponential, n = ", length(x)))
LVboxplot(x, col = "grey", xlab = "")
}
par(mfrow=oldpar$mfrow, mar=oldpar$mar)
with(ontime, LVboxplot(sqrt(TaxiIn + TaxiOut) ~ UniqueCarrier, horizontal=FALSE))
County demographics based on 1980 US Census
Description
County level statistics based on the 1980 US Census.
Usage
census
Format
A data frame with 10 variables
- county
County name
- FIPS
FIPS county code
- Latitude,Longitude
Geographic location of county centers
- JanTmp,JulTmp
(normalized) Temperatures in January & July
- JanSun,JulSun
(normalized) Sunshine measurment in January & July
- Elevtn
Elevation above sea level
- totalpop
Population
Determine depth of letter values needed for n observations.
Description
Determine depth of letter values needed for n observations.
Usage
determineDepth(n, k = NULL, alpha = NULL, perc = NULL)
Arguments
n |
number of observation to be shown in the LV boxplot |
k |
number of letter value statistics used |
alpha |
if supplied, depth k is calculated such that (1- |
perc |
if supplied, depth k is adjusted such that |
Details
Supply one of k
, alpha
or perc
.
Draw an LV plot.
Description
Draw an LV plot.
Usage
drawLVplot(
x,
y,
k,
out,
qu,
horizontal,
col,
border = "grey50",
width = 0.9,
width.method = "linear",
median.col,
...
)
Arguments
x |
x positions |
y |
y positions |
k |
number of letter value statistics used |
out |
indices of outliers |
qu |
quantiles |
horizontal |
display horizontally (TRUE) or vertically (FALSE) |
col |
vector of colours to use |
border |
vector of colours to use |
width |
maximum height/width of box |
width.method |
one of 'linear', 'height' or 'area'. Methods 'height' and 'area' ensure that these dimension are proportional to the number of observations within each box. |
Side-by-side LV boxplots with ggplot2.
Description
An extension of standard boxplots which draws k letter statistics.
Conventional boxplots (Tukey 1977) are useful displays for conveying rough
information about the central 50% of the data and the extent of the data.
For moderate-sized data sets (n < 1000
), detailed estimates of tail
behavior beyond the quartiles may not be trustworthy, so the information
provided by boxplots is appropriately somewhat vague beyond the quartiles,
and the expected number of “outliers” and “far-out” values for a
Gaussian sample of size n
is often less than 10 (Hoaglin, Iglewicz,
and Tukey 1986). Large data sets (n \approx 10,000-100,000
) afford
more precise estimates of quantiles in the tails beyond the quartiles and
also can be expected to present a large number of “outliers” (about
0.4 + 0.007 n
).
The letter-value box plot addresses both these shortcomings: it conveys
more detailed information in the tails using letter values, only out to the
depths where the letter values are reliable estimates of their
corresponding quantiles (corresponding to tail areas of roughly
2^{-i}
); “outliers” are defined as a function of the most extreme
letter value shown. All aspects shown on the letter-value boxplot are
actual observations, thus remaining faithful to the principles that
governed Tukey's original boxplot.
Usage
geom_lv(
mapping = NULL,
data = NULL,
stat = "lv",
position = "dodge",
outlier.colour = "black",
outlier.shape = 19,
outlier.size = 1.5,
outlier.stroke = 0.5,
na.rm = TRUE,
varwidth = FALSE,
width.method = "linear",
show.legend = NA,
inherit.aes = TRUE,
...
)
GeomLv
scale_fill_lv(...)
stat_lv(
mapping = NULL,
data = NULL,
geom = "lv",
position = "dodge",
na.rm = TRUE,
conf = 0.95,
percent = NULL,
k = NULL,
show.legend = NA,
inherit.aes = TRUE,
...
)
StatLv
Arguments
mapping |
Set of aesthetic mappings created by |
data |
The data to be displayed in this layer. There are three options: If A A |
position |
Position adjustment, either as a string naming the adjustment
(e.g. |
outlier.colour |
Override aesthetics used for the outliers. Defaults
come from |
outlier.shape |
Override aesthetics used for the outliers. Defaults
come from |
outlier.size |
Override aesthetics used for the outliers. Defaults
come from |
outlier.stroke |
Override aesthetics used for the outliers. Defaults
come from |
na.rm |
If |
varwidth |
if |
width.method |
character, one of 'linear' (default), 'area', or 'height'. This parameter determines whether the width of the box for letter value LV(i) should be proportional to i (linear), proportional to $2^-i$ (height), or whether the area of the box should be proportional to $2^-i$ (area). |
show.legend |
logical. Should this layer be included in the legends?
|
inherit.aes |
If |
... |
Other arguments passed on to |
geom , stat |
Use to override the default connection between
|
conf |
confidence level |
percent |
numeric value: percent of data in outliers |
k |
number of letter values shown |
Format
An object of class GeomLv
(inherits from Geom
, ggproto
, gg
) of length 6.
An object of class StatLv
(inherits from Stat
, ggproto
, gg
) of length 5.
Computed/reported variables
- k
Number of Letter Values used for the display
- LV
Name of the Letter Value
- width
width of the interquartile box
References
McGill, R., Tukey, J. W. and Larsen, W. A. (1978) Variations of box plots. The American Statistician 32, 12-16.
See Also
stat_quantile
to view quantiles conditioned on a
continuous variable.
Examples
library(ggplot2)
p <- ggplot(mpg, aes(class, hwy))
p + geom_lv(aes(fill = after_stat(LV))) + scale_fill_brewer()
p + geom_lv() + geom_jitter(width = 0.2)
p + geom_lv(aes(fill = after_stat(LV))) + scale_fill_lv()
# Outliers
p + geom_lv(varwidth = TRUE, aes(fill = after_stat(LV))) + scale_fill_lv()
p + geom_lv(fill = "grey80", colour = "black")
p + geom_lv(outlier.colour = "red", outlier.shape = 1)
# Plots are automatically dodged when any aesthetic is a factor
p + geom_lv(aes(fill = drv))
# varwidth adjusts the width of the boxes according to the number of observations
ggplot(ontime, aes(UniqueCarrier, TaxiIn + TaxiOut)) +
geom_lv(aes(fill = after_stat(LV)), varwidth=TRUE) +
scale_fill_lv() +
scale_y_sqrt() +
theme_bw()
ontime$DayOfWeek <- as.POSIXlt(ontime$FlightDate)$wday
ggplot(ontime, aes(factor(DayOfWeek), TaxiIn + TaxiOut)) +
geom_lv(aes(fill = after_stat(LV))) +
scale_fill_lv() +
scale_y_sqrt() +
theme_bw()
Compute table of k letter values for vector x
Description
Compute table of k letter values for vector x
Usage
lvtable(x, k, alpha = 0.95)
Arguments
x |
input numeric vector |
k |
number of letter values to compute |
alpha |
alpha-threshold for confidence level |
Ontime Flight Data
Description
Data set detailing on-time performance of national US flights in January 2015. This data is a subset of the data provided by the US Department of Transportation. The full data as well as archived or more recent data is available for download from http://www.transtats.bts.gov/DL_SelectFields.asp?Table_ID=236&DB_Short_Name=On-Time.
Usage
ontime
Format
A data frame consisting of the variables
- FlightDate
a date variable of the day of the flight
- UniqueCarrier
factor variable of the carrier (using the two letter abbreviation)
- FlightNum
numeric variable of the flight number
- CRSDepTime
scheduled departure time in hhmm format
- DepTime
actual departure time in hhmm format
- CRSArrTime
scheduled arrival time in hhmm format
- ArrTime
actual arrival time in hhmm format
- TaxiOut
numeric variable of the taxi out time in minutes
- TaxiIn
numeric variable of the taxi in time in minutes
- ArrDelay
Arrival delay, in Minutes
- DepDelay
Departure delay, in Minutes
- CarrierDelay
Carrier Delay, in Minutes
- WeatherDelay
Weather Delay, in Minutes
- NASDelay
National Air System Delay, in Minutes
- SecurityDelay
Security Delay, in Minutes
- LateAircraftDelay
Late Aircraft Delay, in Minutes
References
http://www.transtats.bts.gov/DL_SelectFields.asp?Table_ID=236&DB_Short_Name=On-Time
Examples
library(ggplot2)
ggplot(ontime, aes(UniqueCarrier, TaxiIn + TaxiOut)) +
geom_lv(aes(fill = after_stat(LV))) +
scale_fill_lv() +
scale_y_sqrt() +
theme_bw()