Function returns a ggplot2 x/y plot of a pair of discrete variables. Instead of a point, a rectangle/cell/tile is located for each x/y value with the cell itself being colored or sized depending on the value of a third associated discrete or continuous variable. Function wraps ggplot2 geom_tile to produce a heatmap that shows magnitude as an array of cells in two dimensions.
create_heatmap(
df,
aes_x = NULL,
aes_y = NULL,
aes_label = NULL,
aes_color = NULL,
aes_fill = NULL,
aes_size = NULL,
aes_width = NULL,
aes_height = NULL,
tile_sz = 1.1,
tile_color = "white",
tile_fill = "white",
label_sz = 6,
label_color = "black",
label_fontface = "plain",
label_alpha = 1,
title = NULL,
subtitle = NULL,
caption = NULL,
center_titles = FALSE,
x_title = NULL,
y_title = NULL,
hide_x_tics = FALSE,
hide_y_tics = FALSE,
rot_x_tic_angle = 0,
rot_y_tic_label = FALSE,
x_limits = NULL,
x_major_breaks = waiver(),
x_minor_breaks = waiver(),
x_labels = waiver(),
x_major_date_breaks = waiver(),
x_minor_date_breaks = waiver(),
x_date_labels = waiver(),
x_log10 = FALSE,
y_limits = NULL,
y_major_breaks = waiver(),
y_minor_breaks = waiver(),
y_labels = waiver(),
y_log10 = FALSE,
x_y_decimals = NULL,
x_y_scientific = NULL,
axis_text_size = 11,
panel_color = "white",
panel_border_color = "black",
show_legend = TRUE,
legend_pos = "right",
legend_key_width = 0.5,
legend_key_height = 0.7,
legend_key_backgrd = "white",
silent_NA_warning = FALSE,
png_file_path = NULL,
png_width_height = c(480, 480)
)
A ggplot class object.
The target data frame from which the heatmap is plotted.
The x axis variable name from 'df'. This is a required discrete numeric, Date/POSIXct variable.
The y axis variable name from 'df'. This is a required discrete numeric.
Sets the variable name from 'df' as the source for the tile's text.
The discrete/continuous variable name from 'df' for the aesthetic mapping for color.
The discrete/continuous variable name from 'df' for the aesthetic mapping for fill.
The variable name from 'df' for the aesthetic mapping for size.
The variable name from 'df' for the aesthetic mapping for width.
The variable name from 'df' for the aesthetic mapping for height.
A numeric that sets the tile's size width attribute in millimeters.
A numeric that sets the tile's attribute border color.
A string that sets the fill color attribute for the tile.
A numeric that sets the size of the label.
A string that sets the label's color.
A string that sets the label's font face. Acceptable values are "plain", "bold", "italic", "bold.italic".
A numeric that sets the label's alpha value.
A string that sets the plot title.
A string that sets the plot subtitle.
A string that sets the plot caption
A logical which if TRUE
centers both the 'title' and 'subtitle'.
A string that sets the x axis title. If NULL
(the default) then the x axis title does not appear.
A string that sets the y axis title. If NULL
(the default) then the y axis title does not appear.
A logical that controls the appearance of the x axis tics.
A logical that controls the appearance of the y axis tics.
A numeric that sets the angle of rotation for the x tic labels. When x tic labels are long, a value of 40 for this argument usually works well.
A logical which if TRUE rotates the y tic labels 90 degrees for enhanced readability.
Depending on the class of 'aes_x', a numeric/Date/POSIXct 2 element vector that sets the minimum and maximum for the x axis. Use NA to refer to the existing minimum and maximum.
Depending on the class of 'aes_x', a numeric/Date/POSIXct vector or function that defines the exact major tic locations along the x axis.
Depending on the class of 'aes_x', a numeric/Date/POSIXct vector or function that defines the exact minor tic locations along the x axis.
A character vector with the same length as 'x_major_breaks', that labels the major tics.
If the class of 'aes_x' is Date/POSIXct, a string containing the number and date unit for major breaks. Examples: "1 year", "4 sec", "3 month", "2 week".
If the class of 'aes_x' is Date/POSIXct, a string containing the number and date unit for minor breaks.
If the class of 'aes_x' is Date/POSIXct, a string containing the format codes, the strftime
format, for the date.
Examples: %Y-%m
, %Y/%b/%d
, %H-%M-%S
A logical which if TRUE
will use a log10 scale for the x axis.
A numeric 2 element vector that sets the minimum and maximum for the y axis.
Use NA
to refer to the existing minimum and maximum.
A numeric vector or function that defines the exact major tic locations along the y axis.
A numeric vector or function that defines the exact minor tic locations along the y axis.
A character vector with the same length as 'y_major_breaks', that labels the major tics.
A logical which if TRUE
will use a log10 scale for the y axis.
A two element numeric vector that set the number of decimals for the x and y tic labels.
A two element logical vector that if TRUE uses scientific notation for the x and y tic labels.
A numeric that sets the font size along the axis'. Default is 11.
A string in hexidecimal or color name that sets the plot panel's color. The default is "white".
A string in hexidecimal or color name that sets the plot panel's border color. The default is "black".
A logical that controls the appearance of the legend.
A string that sets the legend position. Acceptable values are "top", "bottom", "left", "right".
A numeric that sets the legend width in cm.
A numeric that sets the legend height in cm.
A string that sets the legend's background color.
A logical that controls the appearance of a console warning when Na's are removed.
A character string with the directory and file name to produce a png image of the plot.
A numeric vector that sets the width and height of the png image in pixels. The default is c(480,480). There are 37.8 pixels in a centimeter.
library(ggplot2)
library(data.table)
library(RplotterPkg)
RplotterPkg::create_heatmap(
df = RplotterPkg::spinrates,
aes_x = "velocity",
aes_y = "spinrate",
aes_fill = "swing_miss",
aes_label = "swing_miss",
label_fontface = "bold",
title = "Likelihood of swinging and missing on a fastball",
x_title = "Velocity",
y_title = "Spinrate",
label_sz = 5,
rot_y_tic_label = TRUE
) +
ggplot2::scale_fill_gradientn(
colors = RColorBrewer::brewer.pal(n = 9, name = "YlOrRd"),
n.breaks = 8
) +
ggplot2::guides(
fill = ggplot2::guide_colorbar(
ticks.colour = "black"
)
)
Run the code above in your browser using DataLab