Themes are a powerful way to customize the non-data components of your plots: i.e. titles, labels, fonts, background, gridlines, and legends. Themes can be used to give plots a consistent customized look. Modify a single plot's theme using theme(); see theme_update() if you want modify the active theme, to affect all subsequent plots. Use the themes available in complete themes if you would like to use a complete theme such as theme_bw(), theme_minimal(), and more. Theme elements are documented together according to inheritance, read more about theme inheritance below.
Usage
gg_theme({
"line",
"rect",
"text",
"title",
aspect.ratio,
axis.title,
axis.title.x,
axis.title.x.top,
axis.title.x.bottom,
axis.title.y,
axis.title.y.left,
axis.title.y.right,
axis.text,
axis.text.x,
axis.text.x.top,
axis.text.x.bottom,
axis.text.y,
axis.text.y.left,
axis.text.y.right,
axis.ticks,
axis.ticks.x,
axis.ticks.x.top,
axis.ticks.x.bottom,
axis.ticks.y,
axis.ticks.y.left,
axis.ticks.y.right,
axis.ticks.length,
axis.ticks.length.x,
axis.ticks.length.x.top,
axis.ticks.length.x.bottom,
axis.ticks.length.y,
axis.ticks.length.y.left,
axis.ticks.length.y.right,
axis.line,
axis.line.x,
axis.line.x.top,
axis.line.x.bottom,
axis.line.y,
axis.line.y.left,
axis.line.y.right,
legend.background,
legend.margin,
legend.spacing,
legend.spacing.x,
legend.spacing.y,
legend.key,
legend.key.size
,
legend.key.height,
legend.key.width,
legend.text,
legend.text.align,
legend.title,
legend.title.align,
legend.position,
legend.direction,
legend.justification,
legend.box,
legend.box.just,
legend.box.margin,
legend.box.background,
legend.box.spacing,
panel.background,
panel.border,
panel.spacing,
panel.spacing.x,
panel.spacing.y,
panel.grid,
panel.grid.major,
panel.grid.minor,
panel.grid.major.x,
panel.grid.major.y,
panel.grid.minor.x,
panel.grid.minor.y,
panel.ontop,
plot.background,
plot.title,
plot.title.position,
plot.subtitle,
plot.caption,
plot.caption.position,
plot.tag,
plot.tag.position,
plot.margin,
strip.background,
strip.background.x,
strip.background.y,
strip.placement,
strip.text,
strip.text.x,
strip.text.y,
strip.switch.pad.grid,
strip.switch.pad.wrap,
"...",
"complete" = false,
"validate" = true
})
line |
all line elements (element_line()) | |
---|---|---|
rect |
all rectangular elements (element_rect()) | |
text |
all text elements (element_text()) | |
title |
all title elements: plot, axes, legends (element_text(); inherits from text) | |
aspect.ratio |
aspect ratio of the panel | |
axis.title, axis.title.x, axis.title.y, axis.title.x.top, axis.title.x.bottom, axis.title.y.left, axis.title.y.right |
labels of axes (element_text()). Specify all axes' labels (axis.title), labels by plane (using axis.title.x or axis.title.y), or individually for each axis (using axis.title.x.bottom, axis.title.x.top, axis.title.y.left, axis.title.y.right). axis.title.*.* inherits from axis.title.* which inherits from axis.title, which in turn inherits from text | |
axis.text, axis.text.x, axis.text.y, axis.text.x.top, axis.text.x.bottom, axis.text.y.left, axis.text.y.right |
tick labels along axes (element_text()). Specify all axis tick labels (axis.text), tick labels by plane (using axis.text.x or axis.text.y), or individually for each axis (using axis.text.x.bottom, axis.text.x.top, axis.text.y.left, axis.text.y.right). axis.text.*.* inherits from axis.text.* which inherits from axis.text, which in turn inherits from text | |
axis.ticks, axis.ticks.x, axis.ticks.x.top, axis.ticks.x.bottom, axis.ticks.y, axis.ticks.y.left, axis.ticks.y.right |
tick marks along axes (element_line()). Specify all tick marks (axis.ticks), ticks by plane (using axis.ticks.x or axis.ticks.y), or individually for each axis (using axis.ticks.x.bottom, axis.ticks.x.top, axis.ticks.y.left, axis.ticks.y.right). axis.ticks.*.* inherits from axis.ticks.* which inherits from axis.ticks, which in turn inherits from line | |
axis.ticks.length, axis.ticks.length.x, axis.ticks.length.x.top, axis.ticks.length.x.bottom, axis.ticks.length.y, axis.ticks.length.y.left, axis.ticks.length.y.right |
length of tick marks (unit) | |
axis.line, axis.line.x, axis.line.x.top, axis.line.x.bottom, axis.line.y, axis.line.y.left, axis.line.y.right |
lines along axes (element_line()). Specify lines along all axes (axis.line), lines for each plane (using axis.line.x or axis.line.y), or individually for each axis (using axis.line.x.bottom, axis.line.x.top, axis.line.y.left, axis.line.y.right). axis.line.*.* inherits from axis.line.* which inherits from axis.line, which in turn inherits from line | |
legend.background |
background of legend (element_rect(); inherits from rect) | |
legend.margin |
the margin around each legend (margin()) | |
legend.spacing, legend.spacing.x, legend.spacing.y |
the spacing between legends (unit). legend.spacing.x & legend.spacing.y inherit from legend.spacing or can be specified separately | |
legend.key |
background underneath legend keys (element_rect(); inherits from rect) | |
legend.key.size , legend.key.height, legend.key.width |
| |
legend.text |
legend item labels (element_text(); inherits from text) | |
legend.text.align |
alignment of legend labels (number from 0 (left) to 1 (right)) | |
legend.title |
title of legend (element_text(); inherits from title) | |
legend.title.align |
alignment of legend title (number from 0 (left) to 1 (right)) | |
legend.position |
the position of legends ("none", "left", "right", "bottom", "top", or two-element numeric vector) | |
legend.direction |
layout of items in legends ("horizontal" or "vertical") | |
legend.justification |
anchor point for positioning legend inside plot ("center" or two-element numeric vector) or the justification according to the plot area when positioned outside the plot | |
legend.box |
arrangement of multiple legends ("horizontal" or "vertical") | |
legend.box.just |
justification of each legend within the overall bounding box, when there are multiple legends ("top", "bottom", "left", or "right") | |
legend.box.margin |
margins around the full legend area, as specified using margin() | |
legend.box.background |
background of legend area (element_rect(); inherits from rect) | |
legend.box.spacing |
The spacing between the plotting area and the legend box (unit) | |
panel.background |
background of plotting area, drawn underneath plot (element_rect(); inherits from rect) | |
panel.border |
border around plotting area, drawn on top of plot so that it covers tick marks and grid lines. This should be used with fill = NA (element_rect(); inherits from rect) | |
panel.spacing, panel.spacing.x, panel.spacing.y |
spacing between facet panels (unit). panel.spacing.x & panel.spacing.y inherit from panel.spacing or can be specified separately. | |
panel.grid, panel.grid.major, panel.grid.minor, panel.grid.major.x, panel.grid.major.y, panel.grid.minor.x, panel.grid.minor.y |
grid lines (element_line()). Specify major grid lines, or minor grid lines separately (using panel.grid.major or panel.grid.minor) or individually for each axis (using panel.grid.major.x, panel.grid.minor.x, panel.grid.major.y, panel.grid.minor.y). Y axis grid lines are horizontal and x axis grid lines are vertical. panel.grid.*.* inherits from panel.grid.* which inherits from panel.grid, which in turn inherits from line | |
panel.ontop |
option to place the panel (background, gridlines) over the data layers (logical). Usually used with a transparent or blank panel.background. | |
plot.background |
background of the entire plot (element_rect(); inherits from rect) | |
plot.title |
plot title (text appearance) (element_text(); inherits from title) left-aligned by default | |
plot.title.position, plot.caption.position |
Alignment of the plot title/subtitle and caption. The setting for plot.title.position applies to both the title and the subtitle. A value of "panel" (the default) means that titles and/or caption are aligned to the plot panels. A value of "plot" means that titles and/or caption are aligned to the entire plot (minus any space for margins and plot tag). | |
plot.subtitle |
plot subtitle (text appearance) (element_text(); inherits from title) left-aligned by default | |
plot.caption |
caption below the plot (text appearance) (element_text(); inherits from title) right-aligned by default | |
plot.tag |
upper-left label to identify a plot (text appearance) (element_text(); inherits from title) left-aligned by default | |
plot.tag.position |
The position of the tag as a string ("topleft", "top", "topright", "left", "right", "bottomleft", "bottom", "bottomright) or a coordinate. If a string, extra space will be added to accommodate the tag. | |
plot.margin |
margin around entire plot (unit with the | |
strip.background, strip.background.x, strip.background.y |
background of facet labels (element_rect(); inherits from rect). Horizontal facet background (strip.background.x) & vertical facet background (strip.background.y) inherit from strip.background or can be specified separately | |
strip.placement |
placement of strip with respect to axes, either "inside" or "outside". Only important when axes and strips are on the same side of the plot. | |
strip.text, strip.text.x, strip.text.y |
facet labels (element_text(); inherits from text). Horizontal facet labels (strip.text.x) & vertical facet labels (strip.text.y) inherit from strip.text or can be specified separately | |
strip.switch.pad.grid |
space between strips and axes when strips are switched (unit) | |
strip.switch.pad.wrap |
space between strips and axes when strips are switched (unit) | |
... |
additional element specifications not part of base cxplot2. In general, these should also be defined in the element tree argument. | |
complete |
set this to TRUE if this is a complete theme, such as the one returned by theme_grey(). Complete themes behave differently when added to a cxplot object. Also, when setting complete = TRUE all elements will be set to inherit from blank elements. | |
validate |
TRUE to run validate_element(), FALSE to bypass checks. |
var cxp = new cxplot("canvas1", mtcars, aes("wt", "mpg"));
cxp.geom_point();
cxp.labs({"title": "Fuel economy declines as weight increases"});
// Plot ---------------------------------------------------------------------
var cxp = new cxplot("canvas2", mtcars, aes("wt", "mpg"));
cxp.geom_point();
cxp.labs({"title": "Fuel economy declines as weight increases"});
cxp.gg_theme({"plot.title" : {"size": 0.5}});
var cxp = new cxplot("canvas3", mtcars, aes("wt", "mpg"));
cxp.geom_point();
cxp.labs({"title": "Fuel economy declines as weight increases"});
cxp.gg_theme({"plot.background" : {"fill": "green"}});
// Panels --------------------------------------------------------------------
var cxp = new cxplot("canvas4", mtcars, aes("wt", "mpg"));
cxp.geom_point();
cxp.labs({"title": "Fuel economy declines as weight increases"});
cxp.gg_theme({"panel.background" : {"fill": "white"}});
var cxp = new cxplot("canvas5", mtcars, aes("wt", "mpg"));
cxp.geom_point();
cxp.labs({"title": "Fuel economy declines as weight increases"});
cxp.gg_theme({"panel.border" : {"fill": "red"}});
// Axes ----------------------------------------------------------------------
// Change styles of axes texts and lines
var cxp = new cxplot("canvas6", mtcars, aes("wt", "mpg"));
cxp.geom_point();
cxp.labs({"title": "Fuel economy declines as weight increases"});
cxp.gg_theme({"axis.line" : {"size" : 3, "colour" : "grey"}});
var cxp = new cxplot("canvas7", mtcars, aes("wt", "mpg"));
cxp.geom_point();
cxp.labs({"title": "Fuel economy declines as weight increases"});
cxp.gg_theme({"axis.text" : {"colour" : "blue"}});
var cxp = new cxplot("canvas8", mtcars, aes("wt", "mpg"));
cxp.geom_point();
cxp.labs({"title": "Fuel economy declines as weight increases"});
cxp.gg_theme({"axis.tick" : {"size" : 2}});
// Change the appearance of the y-axis title
var cxp = new cxplot("canvas9", mtcars, aes("wt", "mpg"));
cxp.geom_point();
cxp.labs({"title": "Fuel economy declines as weight increases"});
cxp.gg_theme({"axis.title.y" : {"size" : 1.5}});
// Legend --------------------------------------------------------------------
// Change the appearance of the y-axis title
var cxp = new cxplot("canvas10", mtcars, aes("wt", "mpg"));
cxp.geom_point(aes({"colour" : {"factor" : "cyl"}, "shape": {"factor" : "vs"}}));
cxp.labs({"x": "Weight (1000 lbs)",
"y": "Fuel economy (mpg)",
"colour": "Cylinders",
"shape": "Transmission"});
// Position
var cxp = new cxplot("canvas11", mtcars, aes("wt", "mpg"));
cxp.geom_point(aes({"colour" : {"factor" : "cyl"}, "shape" : {"factor" : "vs"}}));
cxp.labs({"x": "Weight (1000 lbs)",
"y": "Fuel economy (mpg)",
"colour": "Cylinders",
"shape": "Transmission"});
cxp.gg_theme({"legend.position" : "none"});
var cxp = new cxplot("canvas12", mtcars, aes("wt", "mpg"));
cxp.geom_point(aes({"colour" : {"factor" : "cyl"}, "shape" : {"factor" : "vs"}}));
cxp.labs({"x": "Weight (1000 lbs)",
"y": "Fuel economy (mpg)",
"colour": "Cylinders",
"shape": "Transmission"});
cxp.gg_theme({"legend.position" : "right", "legend.justification" : "top"});
var cxp = new cxplot("canvas13", mtcars, aes("wt", "mpg"));
cxp.geom_point(aes({"colour" : {"factor" : "cyl"}, "shape" : {"factor" : "vs"}}));
cxp.labs({"x": "Weight (1000 lbs)",
"y": "Fuel economy (mpg)",
"colour": "Cylinders",
"shape": "Transmission"});
cxp.gg_theme({"legend.position" : "bottom"});
// Or place legends inside the plot using relative coordinates between 0 and 1
// legend.justification sets the corner that the position refers to
var cxp = new cxplot("canvas14", mtcars, aes("wt", "mpg"));
cxp.geom_point(aes({"colour" : {"factor" : "cyl"}, "shape" : {"factor" : "vs"}}));
cxp.labs({"x": "Weight (1000 lbs)",
"y": "Fuel economy (mpg)",
"colour": "Cylinders",
"shape": "Transmission"});
cxp.gg_theme({"legend.position" : [0.95, 0.95],
"legend.justification" : ["right", "top"]});
// You can also control the display of the keys
// and the justification related to the plot area can be set
var cxp = new cxplot("canvas15", mtcars, aes("wt", "mpg"));
cxp.geom_point(aes({"colour" : {"factor" : "cyl"}, "shape" : {"factor" : "vs"}}));
cxp.labs({"x": "Weight (1000 lbs)",
"y": "Fuel economy (mpg)",
"colour": "Cylinders",
"shape": "Transmission"});
cxp.gg_theme({"legend.text" : {"size" : 2, "color": "red"}});
var cxp = new cxplot("canvas16", mtcars, aes("wt", "mpg"));
cxp.geom_point(aes({"colour" : {"factor" : "cyl"}, "shape" : {"factor" : "vs"}}));
cxp.labs({"x": "Weight (1000 lbs)",
"y": "Fuel economy (mpg)",
"colour": "Cylinders",
"shape": "Transmission"});
cxp.gg_theme({"legend.title" : {"face" : "bold"}});
// Strips --------------------------------------------------------------------
var cxp = new cxplot("canvas17", mtcars, aes("wt", "mpg"));
cxp.geom_point();
cxp.facet_wrap("cyl");
var cxp = new cxplot("canvas18", mtcars, aes("wt", "mpg"));
cxp.geom_point();
cxp.facet_wrap("cyl");
cxp.gg_theme({"strip.background" : {"fill" : "grey"}});