Set theme elements
Usage
theme(..., complete = FALSE)
Arguments
- ...
- a list of element name, element pairings that modify the existing theme.
- 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 ggplot object.
Description
Use this function to modify theme settings.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 inherit directly or
indirectly from text
; all lines inherit from
line
, and all rectangular objects inherit from
rect
.For more examples of modifying properties using inheritance, see
+.gg
and
%+replace%
.To see a graphical representation of the inheritance tree, see the last example below.
Theme elements
The individual theme elements are:line | all line elements
(element_line ) |
rect | all rectangluar
elements (element_rect ) |
text | all text
elements (element_text ) |
title | all title
elements: plot, axes, legends (element_text ;
inherits from text ) |
axis.title | label of axes (element_text ;
inherits from text ) |
axis.title.x | x axis
label (element_text ; inherits from
axis.title ) |
axis.title.y | y axis label
(element_text ; inherits from axis.title )
|
axis.text | tick labels along axes
(element_text ; inherits from text ) |
axis.text.x | x axis tick labels (element_text ;
inherits from axis.text ) |
axis.text.y | y
axis tick labels (element_text ; inherits from
axis.text ) |
axis.ticks | tick marks along
axes (element_line ; inherits from line ) |
axis.ticks.x | x axis tick marks (element_line ;
inherits from axis.ticks ) |
axis.ticks.y | y
axis tick marks (element_line ; inherits from
axis.ticks ) |
axis.ticks.length | length of
tick marks (unit ) |
axis.ticks.margin | space
between tick mark and tick label (unit ) |
axis.line | lines along axes (element_line ;
inherits from line ) |
axis.line.x | line
along x axis (element_line ; inherits from
axis.line ) |
axis.line.y | line along y axis
(element_line ; inherits from axis.line ) |
legend.background | background of legend
(element_rect ; inherits from rect ) |
legend.margin | extra space added around legend
(unit ) |
legend.key | background underneath
legend keys (element_rect ; inherits from
rect ) |
legend.key.size | size of legend keys
(unit ; inherits from legend.key.size ) |
legend.key.height | key background height
(unit ; inherits from legend.key.size ) |
legend.key.width | key background width (unit ;
inherits from legend.key.size ) |
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. ("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) |
legend.box | arrangement of multiple legends ("horizontal" or "vertical") |
panel.background | background of plotting area
(element_rect ; inherits from rect ) |
panel.border | border around plotting area
(element_rect ; inherits from rect ) |
panel.margin | margin around facet panels
(unit ) |
panel.grid | grid lines
(element_line ; inherits from line ) |
panel.grid.major | major grid lines
(element_line ; inherits from panel.grid )
|
panel.grid.minor | minor grid lines
(element_line ; inherits from panel.grid )
|
panel.grid.major.x | vertical major grid lines
(element_line ; inherits from
panel.grid.major ) |
panel.grid.major.y | horizontal major grid lines (element_line ;
inherits from panel.grid.major ) |
panel.grid.minor.x | vertical minor grid lines
(element_line ; inherits from
panel.grid.minor ) |
panel.grid.minor.y | horizontal minor grid lines (element_line ;
inherits from panel.grid.minor ) |
plot.background | background of the entire plot
(element_rect ; inherits from rect ) |
plot.title | plot title (text appearance)
(element_text ; inherits from title ) |
plot.margin | margin around entire plot (unit )
|
strip.background | background of facet labels
(element_rect ; inherits from rect ) |
strip.text | facet labels (element_text ;
inherits from text ) |
strip.text.x | facet
labels along horizontal direction (element_text ;
inherits from strip.text ) |
strip.text.y | facet labels along vertical direction
(element_text ; inherits from strip.text )
|
Examples
# Scatter plot of gas mileage by vehicle weight p <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point() # Calculate slope and intercept of line of best fit coef(lm(mpg ~ wt, data = mtcars))(Intercept) wt 37.285126 -5.344472# Calculate correlation coefficient with(mtcars, cor(wt, mpg, use = "everything", method = "pearson"))[1] -0.8676594#annotate the plot p + geom_abline(intercept = 37, slope = -5) + geom_text(data = data.frame(), aes(4.5, 30, label = "Pearson-R = -.87"))# Change the axis labels # Original plot p# Change title appearance p <- p + labs(title = "Vehicle Weight-Gas Mileage Relationship") # Set title to twice the base font size p + theme(plot.title = element_text(size = rel(2)))# Changing plot look with themes DF <- data.frame(x = rnorm(400)) m <- ggplot(DF, aes(x = x)) + geom_histogram() # Default is theme_grey() mstat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this. stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this.# Manipulate Axis Attributes library(grid) # for unit m + theme(axis.line = element_line(size = 3, colour = "red", linetype = "dotted"))stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this. stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this. stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this. stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this. stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this. stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this. stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this.# Legend margin controls extra space around outside of legend: z + theme(legend.background = element_rect(), legend.margin = unit(1, "cm"))# To change the title of the legend use the name argument # in one of the scale options z + scale_colour_brewer(name = "My Legend")# Faceting Attributes set.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))# Modify a theme and save it mytheme <- theme_grey() + theme(plot.title = element_text(colour = "red")) p + mytheme## Run this to generate a graph of the element inheritance tree build_element_graph <- function(tree) { require(igraph) require(plyr) inheritdf <- function(name, item) { if (length(item$inherit) == 0) data.frame() else data.frame(child = name, parent = item$inherit) } edges <- rbind.fill(mapply(inheritdf, names(tree), tree)) # Explicitly add vertices (since not all are in edge list) vertices <- data.frame(name = names(tree)) graph.data.frame(edges, vertices = vertices) } g <- build_element_graph(ggplot2:::.element_tree)Loading required package: igraph
No comments:
Post a Comment