tinyplot | R Documentation |
Enhances the base plot
function. Supported features
include automatic legends and facets for grouped data, additional plot types,
theme customization, and so on. Users can call either tinyplot()
, or its
shorthand alias plt()
.
tinyplot(x, ...)
## Default S3 method:
tinyplot(
x = NULL,
y = NULL,
by = NULL,
facet = NULL,
facet.args = NULL,
data = NULL,
type = NULL,
xlim = NULL,
ylim = NULL,
log = "",
main = NULL,
sub = NULL,
xlab = NULL,
ylab = NULL,
ann = par("ann"),
axes = TRUE,
frame.plot = NULL,
asp = NA,
grid = NULL,
palette = NULL,
legend = NULL,
pch = NULL,
lty = NULL,
lwd = NULL,
col = NULL,
bg = NULL,
fill = NULL,
alpha = NULL,
cex = 1,
restore.par = FALSE,
xmin = NULL,
xmax = NULL,
ymin = NULL,
ymax = NULL,
ribbon.alpha = NULL,
add = FALSE,
file = NULL,
width = NULL,
height = NULL,
empty = FALSE,
xaxt = NULL,
yaxt = NULL,
...
)
## S3 method for class 'formula'
tinyplot(
x = NULL,
data = parent.frame(),
facet = NULL,
facet.args = NULL,
type = NULL,
xlim = NULL,
ylim = NULL,
main = NULL,
sub = NULL,
xlab = NULL,
ylab = NULL,
ann = par("ann"),
axes = TRUE,
frame.plot = NULL,
asp = NA,
grid = NULL,
pch = NULL,
col = NULL,
lty = NULL,
lwd = NULL,
restore.par = FALSE,
formula = NULL,
subset = NULL,
na.action = NULL,
drop.unused.levels = TRUE,
...
)
plt(x, ...)
## S3 method for class 'density'
tinyplot(
x = NULL,
by = NULL,
facet = NULL,
facet.args = NULL,
type = c("l", "area"),
xlim = NULL,
ylim = NULL,
main = NULL,
sub = NULL,
xlab = NULL,
ylab = NULL,
ann = par("ann"),
axes = TRUE,
frame.plot = axes,
asp = NA,
grid = NULL,
pch = NULL,
col = NULL,
lty = NULL,
lwd = NULL,
bg = NULL,
fill = NULL,
restore.par = FALSE,
...
)
x , y |
the x and y arguments provide the x and y coordinates for the
plot. Any reasonable way of defining the coordinates is acceptable; most
likely the names of existing vectors or columns of data frames. See the
'Examples' section below, or the function
|
... |
other graphical parameters (see |
by |
grouping variable(s). The default behaviour is for groups to be
represented in the form of distinct colours, which will also trigger an
automatic legend. (See |
facet |
the faceting variable(s) that you want arrange separate plot windows by. Can be specified in various ways:
|
facet.args |
an optional list of arguments for controlling faceting
behaviour. (Ignored if
|
data |
a data.frame (or list) from which the variables in formula should be taken. A matrix is converted to a data frame. |
type |
character string giving the type of plot desired. If no argument
is provided, then the plot type will default to something sensible for the
type of
|
xlim |
the x limits (x1, x2) of the plot. Note that x1 > x2 is allowed
and leads to a ‘reversed axis’. The default value, NULL, indicates that
the range of the |
ylim |
the y limits of the plot. |
log |
a character string which contains "x" if the x axis is to be logarithmic, "y" if the y axis is to be logarithmic and "xy" or "yx" if both axes are to be logarithmic. |
main |
a main title for the plot, see also |
sub |
a subtitle for the plot. |
xlab |
a label for the x axis, defaults to a description of x. |
ylab |
a label for the y axis, defaults to a description of y. |
ann |
a logical value indicating whether the default annotation (title and x and y axis labels) should appear on the plot. |
axes |
logical or character. Should axes be drawn ( |
frame.plot |
a logical indicating whether a box should be drawn around
the plot. Can also use |
asp |
the y/xy/x aspect ratio, see |
grid |
argument for plotting a background panel grid, one of either:
|
palette |
one of the following options:
|
legend |
one of the following options:
|
pch |
plotting "character", i.e., symbol to use. Character, integer, or
vector of length equal to the number of categories in the |
lty |
line type. Character, integer, or vector of length equal to the
number of categories in the |
lwd |
line width. Numeric scalar or vector of length equal to the
number of categories in the |
col |
plotting color. Character, integer, or vector of length equal to
the number of categories in the |
bg |
background fill color for the open plot symbols 21:25 (see
For both of these convenience arguments, note that the (grouped) |
fill |
alias for |
alpha |
a numeric in the range |
cex |
character expansion. A numerical vector (can be a single value) giving the amount by which plotting characters and symbols should be scaled relative to the default. Note that NULL is equivalent to 1.0, while NA renders the characters invisible. |
restore.par |
a logical value indicating whether the
|
xmin , xmax , ymin , ymax |
minimum and maximum coordinates of relevant area
or interval plot types. Only used when the |
ribbon.alpha |
numeric factor modifying the opacity alpha of any ribbon
shading; typically in |
add |
logical. If TRUE, then elements are added to the current plot rather than drawing a new plot window. Note that the automatic legend for the added elements will be turned off. |
file |
character string giving the file path for writing a plot to disk.
If specified, the plot will not be displayed interactively, but rather sent
to the appropriate external graphics device (i.e.,
|
width |
numeric giving the plot width in inches. Together with |
height |
numeric giving the plot height in inches. Same considerations as
|
empty |
logical indicating whether the interior plot region should be
left empty. The default is |
xaxt , yaxt |
character specifying the type of x-axis and y-axis, respectively.
See |
formula |
a |
subset , na.action , drop.unused.levels |
arguments passed to |
Disregarding the enhancements that it supports, tinyplot
tries as far as
possible to mimic the behaviour and syntax logic of the original base
plot
function. Users should therefore be able to swap
out existing plot
calls for tinyplot
(or its shorthand alias plt
),
without causing unexpected changes to the output.
No return value, called for side effect of producing a plot.
#'
aq = transform(
airquality,
Month = factor(Month, labels = month.abb[unique(Month)])
)
# In most cases, `tinyplot` should be a drop-in replacement for regular
# `plot` calls. For example:
op = tpar(mfrow = c(1, 2))
plot(0:10, main = "plot")
tinyplot(0:10, main = "tinyplot")
tpar(op) # restore original layout
# Aside: `tinyplot::tpar()` is a (near) drop-in replacement for `par()`
# Unlike vanilla plot, however, tinyplot allows you to characterize groups
# using either the `by` argument or equivalent `|` formula syntax.
with(aq, tinyplot(Day, Temp, by = Month)) ## atomic method
tinyplot(Temp ~ Day | Month, data = aq) ## formula method
# (Notice that we also get an automatic legend.)
# You can also use the equivalent shorthand `plt()` alias if you'd like to
# save on a few keystrokes
plt(Temp ~ Day | Month, data = aq) ## shorthand alias
# Use standard base plotting arguments to adjust features of your plot.
# For example, change `pch` (plot character) to get filled points and `cex`
# (character expansion) to increase their size.
tinyplot(
Temp ~ Day | Month,
data = aq,
pch = 16,
cex = 2
)
# We can add alpha transparency for overlapping points
tinyplot(
Temp ~ Day | Month,
data = aq,
pch = 16,
cex = 2,
alpha = 0.3
)
# To get filled points with a common solid background color, use an
# appropriate plotting character (21:25) and combine with one of the special
# `bg` convenience arguments.
tinyplot(
Temp ~ Day | Month,
data = aq,
pch = 21, # use filled circles
cex = 2,
bg = 0.3, # numeric in [0,1] adds a grouped background fill with transparency
col = "black" # override default color mapping; give all points a black border
)
# Converting to a grouped line plot is a simple matter of adjusting the
# `type` argument.
tinyplot(
Temp ~ Day | Month,
data = aq,
type = "l"
)
# Similarly for other plot types, including some additional ones provided
# directly by tinyplot, e.g. density plots or internal plots (ribbons,
# pointranges, etc.)
tinyplot(
~ Temp | Month,
data = aq,
type = "density",
fill = "by"
)
# Facet plots are supported too. Facets can be drawn on their own...
tinyplot(
Temp ~ Day,
facet = ~ Month,
data = aq,
type = "area",
main = "Temperatures by month"
)
# ... or combined/contrasted with the by (colour) grouping.
aq = transform(aq, Summer = Month %in% c("Jun", "Jul", "Aug"))
tinyplot(
Temp ~ Day | Summer,
facet = ~ Month,
data = aq,
type = "area",
palette = "dark2",
main = "Temperatures by month and season"
)
# Users can override the default square window arrangement by passing `nrow`
# or `ncol` to the helper facet.args argument. Note that we can also reduce
# axis label repetition across facets by turning the plot frame off.
tinyplot(
Temp ~ Day | Summer,
facet = ~ Month, facet.args = list(nrow = 1),
data = aq,
type = "area",
palette = "dark2",
frame = FALSE,
main = "Temperatures by month and season"
)
# Use a two-sided formula to arrange the facet windows in a fixed grid.
# LHS -> facet rows; RHS -> facet columns
aq$hot = ifelse(aq$Temp>=75, "hot", "cold")
aq$windy = ifelse(aq$Wind>=15, "windy", "calm")
tinyplot(
Temp ~ Day,
facet = windy ~ hot,
data = aq
)
# The (automatic) legend position and look can be customized using
# appropriate arguments. Note the trailing "!" in the `legend` position
# argument below. This tells `tinyplot` to place the legend _outside_ the plot
# area.
tinyplot(
Temp ~ Day | Month,
data = aq,
type = "l",
legend = legend("bottom!", title = "Month of the year", bty = "o")
)
# The default group colours are inherited from either the "R4" or "Viridis"
# palettes, depending on the number of groups. However, all palettes listed
# by `palette.pals()` and `hcl.pals()` are supported as convenience strings,
# or users can supply a valid palette-generating function for finer control
tinyplot(
Temp ~ Day | Month,
data = aq,
type = "l",
palette = "tableau"
)
# It's possible to further customize the look of you plots using familiar
# arguments and base plotting theme settings (e.g., via `(t)par`).
op = tpar(family = "HersheySans", las = 1)
tinyplot(
Temp ~ Day | Month,
data = aq,
type = "b", pch = 16,
palette = "tableau", alpha = 0.5,
main = "Daily temperatures by month",
frame = FALSE, grid = TRUE
)
tpar(op) # restore original graphics parameters
# Note: For more examples and a detailed walkthrough, please see the
# introductory tinyplot tutorial available online:
# https://grantmcdermott.com/tinyplot/vignettes/intro_tutorial.html
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.