theme function - RDocumentation (2024)

Description

Use this function to modify theme settings.

Usage

theme(..., complete = FALSE, validate = TRUE)

Arguments

...

a list of element name, element pairings that modify theexisting theme.

complete

set this to TRUE if this is a complete theme, such asthe one returned by theme_grey(). Complete themes behavedifferently when added to a ggplot object.

validate

TRUE to run validate_element, FALSE to bypass checks.

Theme elements

The individual theme elements are:

lineall line elements (element_line)
rectall rectangular elements (element_rect)
textall text elements (element_text)
titleall title elements: plot, axes, legends (element_text; inherits from text)
aspect.ratioaspect ratio of the panel
axis.titlelabel of axes (element_text; inherits from text)
axis.title.xx axis label (element_text; inherits from axis.title)
axis.title.yy axis label (element_text; inherits from axis.title)
axis.texttick labels along axes (element_text; inherits from text)
axis.text.xx axis tick labels (element_text; inherits from axis.text)
axis.text.yy axis tick labels (element_text; inherits from axis.text)
axis.tickstick marks along axes (element_line; inherits from line)
axis.ticks.xx axis tick marks (element_line; inherits from axis.ticks)
axis.ticks.yy axis tick marks (element_line; inherits from axis.ticks)
axis.ticks.lengthlength of tick marks (unit)
axis.linelines along axes (element_line; inherits from line)
axis.line.xline along x axis (element_line; inherits from axis.line)
axis.line.yline along y axis (element_line; inherits from axis.line)
legend.backgroundbackground of legend (element_rect; inherits from rect)
legend.marginextra space added around legend (unit)
legend.keybackground underneath legend keys (element_rect; inherits from rect)
legend.key.sizesize of legend keys (unit; inherits from legend.key.size)
legend.key.heightkey background height (unit; inherits from legend.key.size)
legend.key.widthkey background width (unit; inherits from legend.key.size)
legend.textlegend item labels (element_text; inherits from text)
legend.text.alignalignment of legend labels (number from 0 (left) to 1 (right))
legend.titletitle of legend (element_text; inherits from title)
legend.title.alignalignment of legend title (number from 0 (left) to 1 (right))
legend.positionthe position of legends ("none", "left", "right", "bottom", "top", or two-element numeric vector)
legend.directionlayout of items in legends ("horizontal" or "vertical")
legend.justificationanchor point for positioning legend inside plot ("center" or two-element numeric vector)
legend.boxarrangement of multiple legends ("horizontal" or "vertical")
legend.box.justjustification of each legend within the overall bounding box, when there are multiple legends ("top", "bottom", "left", or "right")
panel.backgroundbackground of plotting area, drawn underneath plot (element_rect; inherits from rect)
panel.borderborder 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.marginmargin around facet panels (unit)
panel.margin.xhorizontal margin around facet panels (unit; inherits from panel.margin)
panel.margin.yvertical margin around facet panels (unit; inherits from panel.margin)
panel.gridgrid lines (element_line; inherits from line)
panel.grid.majormajor grid lines (element_line; inherits from panel.grid)
panel.grid.minorminor grid lines (element_line; inherits from panel.grid)
panel.grid.major.xvertical major grid lines (element_line; inherits from panel.grid.major)
panel.grid.major.yhorizontal major grid lines (element_line; inherits from panel.grid.major)
panel.grid.minor.xvertical minor grid lines (element_line; inherits from panel.grid.minor)
panel.grid.minor.yhorizontal minor grid lines (element_line; inherits from panel.grid.minor)
panel.ontopoption to place the panel (background, gridlines) over the data layers. Usually used with a transparent or blank panel.background. (logical)
plot.backgroundbackground of the entire plot (element_rect; inherits from rect)
plot.titleplot title (text appearance) (element_text; inherits from title) left-aligned by default
plot.subtitleplot subtitle (text appearance) (element_text; inherits from title) left-aligned by default
plot.captioncaption below the plot (text appearance) (element_text; inherits from title) right-aligned by default
plot.marginmargin around entire plot (unit with the sizes of the top, right, bottom, and left margins)
strip.backgroundbackground of facet labels (element_rect; inherits from rect)
strip.textfacet labels (element_text; inherits from text)
strip.text.xfacet labels along horizontal direction (element_text; inherits from strip.text)
strip.text.yfacet labels along vertical direction (element_text; inherits from strip.text)
strip.switch.pad.gridspace between strips and axes when strips are switched (unit)
strip.switch.pad.wrapspace between strips and axes when strips are switched (unit)

Details

Theme elements can inherit properties from other theme elements.For example, axis.title.x inherits from axis.title,which in turn inherits from text. All text elements inheritdirectly or indirectly from text; all lines inherit fromline, and all rectangular objects inherit from rect.

For more examples of modifying properties using inheritance,%+replace%.

To see a graphical representation of the inheritance tree, see thelast example below.

See Also

%+replace%

rel

element_blank

element_line

element_rect

element_text

Examples

Run this code

# \donttest{p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()pp + theme(panel.background = element_rect(colour = "pink"))p + theme_bw()# Scatter plot of gas mileage by vehicle weightp <- ggplot(mtcars, aes(wt, mpg)) + geom_point()# Calculate slope and intercept of line of best fitcoef(lm(mpg ~ wt, data = mtcars))p + geom_abline(intercept = 37, slope = -5)# Calculate correlation coefficientwith(mtcars, cor(wt, mpg, use = "everything", method = "pearson"))#annotate the plotp + geom_abline(intercept = 37, slope = -5) +geom_text(data = data.frame(), aes(4.5, 30, label = "Pearson-R = -.87"))# Change the axis labels# Original plotpp + labs(x = "Vehicle Weight", y = "Miles per Gallon")# Orp + labs(x = "Vehicle Weight", y = "Miles per Gallon")# Change title appearancep <- p + labs(title = "Vehicle Weight-Gas Mileage Relationship")# Set title to twice the base font sizep + theme(plot.title = element_text(size = rel(2)))p + theme(plot.title = element_text(size = rel(2), colour = "blue"))# Add a subtitle and adjust bottom marginp + labs(title = "Vehicle Weight-Gas Mileage Relationship", subtitle = "You need to wrap long subtitleson manually") + theme(plot.subtitle = element_text(margin = margin(b = 20)))# Changing plot look with themesDF <- data.frame(x = rnorm(400))m <- ggplot(DF, aes(x = x)) + geom_histogram()# Default is theme_grey()m# Compare withm + theme_bw()# Manipulate Axis Attributesm + theme(axis.line = element_line(size = 3, colour = "red", linetype = "dotted"))m + theme(axis.text = element_text(colour = "blue"))m + theme(axis.text.y = element_blank())m + theme(axis.ticks = element_line(size = 2))m + theme(axis.title.y = element_text(size = rel(1.5), angle = 90))m + theme(axis.title.x = element_blank())m + theme(axis.ticks.length = unit(.85, "cm"))# Legend Attributesz <- ggplot(mtcars, aes(wt, mpg)) + geom_point(aes(colour = factor(cyl)))zz + theme(legend.position = "none")z + theme(legend.position = "bottom")# Or use relative coordinates between 0 and 1z + theme(legend.position = c(.5, .5))# Add a border to the whole legendz + theme(legend.background = element_rect(colour = "black"))# Legend margin controls extra space around outside of legend:z + theme(legend.background = element_rect(), legend.margin = unit(1, "cm"))z + theme(legend.background = element_rect(), legend.margin = unit(0, "cm"))# Or to just the keysz + theme(legend.key = element_rect(colour = "black"))z + theme(legend.key = element_rect(fill = "yellow"))z + theme(legend.key.size = unit(2.5, "cm"))z + theme(legend.text = element_text(size = 20, colour = "red", angle = 45))z + theme(legend.title = element_text(face = "italic"))# To change the title of the legend use the name argument# in one of the scale optionsz + scale_colour_brewer(name = "My Legend")z + scale_colour_grey(name = "Number of \nCylinders")# Panel and Plot Attributesz + theme(panel.background = element_rect(fill = "black"))z + theme(panel.border = element_rect(linetype = "dashed", colour = "black"))z + theme(panel.grid.major = element_line(colour = "blue"))z + theme(panel.grid.minor = element_line(colour = "red", linetype = "dotted"))z + theme(panel.grid.major = element_line(size = 2))z + theme(panel.grid.major.y = element_blank(), panel.grid.minor.y = element_blank())z + theme(plot.background = element_rect())z + theme(plot.background = element_rect(fill = "green"))# Faceting Attributesset.seed(4940)dsmall <- diamonds[sample(nrow(diamonds), 1000), ]k <- ggplot(dsmall, aes(carat, ..density..)) + geom_histogram(binwidth = 0.2) + facet_grid(. ~ cut)k + theme(strip.background = element_rect(colour = "purple", fill = "pink", size = 3, linetype = "dashed"))k + theme(strip.text.x = element_text(colour = "red", angle = 45, size = 10, hjust = 0.5, vjust = 0.5))k + theme(panel.margin = unit(5, "lines"))k + theme(panel.margin.y = unit(0, "lines"))# Put gridlines on topmeanprice <- tapply(diamonds$price, diamonds$cut, mean)cut <- factor(levels(diamonds$cut), levels = levels(diamonds$cut))df <- data.frame(meanprice, cut)g <- ggplot(df, aes(cut, meanprice)) + geom_bar(stat = "identity")g + geom_bar(stat = "identity") + theme(panel.background = element_blank(), panel.grid.major.x = element_blank(), panel.grid.minor.x = element_blank(), panel.grid.minor.y = element_blank(), panel.ontop = TRUE)# Modify a theme and save itmytheme <- theme_grey() + theme(plot.title = element_text(colour = "red"))p + mytheme# }

Run the code above in your browser using DataLab

theme function - RDocumentation (2024)
Top Articles
Latest Posts
Recommended Articles
Article information

Author: Greg Kuvalis

Last Updated:

Views: 5549

Rating: 4.4 / 5 (75 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Greg Kuvalis

Birthday: 1996-12-20

Address: 53157 Trantow Inlet, Townemouth, FL 92564-0267

Phone: +68218650356656

Job: IT Representative

Hobby: Knitting, Amateur radio, Skiing, Running, Mountain biking, Slacklining, Electronics

Introduction: My name is Greg Kuvalis, I am a witty, spotless, beautiful, charming, delightful, thankful, beautiful person who loves writing and wants to share my knowledge and understanding with you.