Package {ggplate}


Title: Create Layout Plots of Biological Culture Plates and Microplates
Version: 0.4.0
Description: Enables users to create simple plots of biological culture plates as well as microplates. Both continuous and discrete values can be plotted onto the plate layout.
License: MIT + file LICENSE
Encoding: UTF-8
LazyData: true
Imports: dplyr, ggplot2, scales, purrr, rlang, stringr, tidyr, utils, farver
Suggests: covr, testthat (≥ 3.0.0)
Depends: R (≥ 4.1.0)
URL: https://github.com/jpquast/ggplate, https://jpquast.github.io/ggplate/
BugReports: https://github.com/jpquast/ggplate/issues
Config/testthat/edition: 3
Config/roxygen2/version: 8.0.0
NeedsCompilation: no
Packaged: 2026-09-01 09:16:48 UTC; jquast
Author: Jan-Philipp Quast ORCID iD [aut, cre]
Maintainer: Jan-Philipp Quast <jpquast.software@gmail.com>
Repository: CRAN
Date/Publication: 2026-09-01 09:30:02 UTC

Colour scheme for well borders

Description

A colour scheme for the borders of wells that contains 4 colours. The colours are meant to mark the status of a well (Fail, Check, OK and Not tested). They do not appear in the protti_colours and viridis_colours schemes, which ensures that borders are visible on every fill colour.

Usage

border_colours

Format

A vector containing 4 colours


Continuous 12-well plate dataset

Description

A dataset containing 12 positive numeric values randomly generated using a normal distribution (rnorm()). Each value is assigned to a position in a 12-well plate. The Status column marks wells with a low signal.

Usage

data_continuous_12

Format

A data frame with a Value, a well and a Status column.

Source

Randomly generated.


Continuous 1536-well plate dataset (A-AF)

Description

A dataset containing 1536 positive numeric values randomly generated using a normal distribution (rnorm()). Each value is assigned to a position in a 1536-well plate. The row format uses the A-AF labeling. The Status column marks the wells at the edge of the plate, which are prone to evaporation.

Usage

data_continuous_1536

Format

A data frame with a well, a Value and a Status column.

Source

Randomly generated.


Continuous 1536-well plate dataset (Aa-Hd)

Description

A dataset containing 1536 positive numeric values randomly generated using a normal distribution (rnorm()). Each value is assigned to a position in a 1536-well plate. The row format uses the Ab-Hd labeling. The Status column marks the four columns of the plate that were not used.

Usage

data_continuous_1536_Aa

Format

A data frame with a well, a Value and a Status column.

Source

Randomly generated.


Continuous 24-well plate dataset

Description

A dataset containing 24 positive numeric values randomly generated using a normal distribution (rnorm()). Each value is assigned to a position in a 24-well plate. The Status column marks wells with a low signal.

Usage

data_continuous_24

Format

A data frame with a Value, a well and a Status column.

Source

Randomly generated.


Continuous 384-well plate dataset

Description

A dataset containing 384 positive numeric values randomly generated using a normal distribution (rnorm()). Each value is assigned to a position in a 384-well plate. The Status column marks the wells at the edge of the plate, which are prone to evaporation.

Usage

data_continuous_384

Format

A data frame with a Value, a well and a Status column.

Source

Randomly generated.


Continuous 48-well plate dataset

Description

A dataset containing 48 positive numeric values randomly generated using a normal distribution (rnorm()). Each value is assigned to a position in a 48-well plate. The Status column marks wells with a low or a high signal.

Usage

data_continuous_48

Format

A data frame with a Value, a well and a Status column.

Source

Randomly generated.


Continuous incomplete 48-well plate dataset

Description

A dataset containing 23 positive numeric values randomly generated using a normal distribution (rnorm()). Each value is assigned to a position in a 48-well plate. Therefore, not every well in the plate contains a value. The position 1D and the second half of the plate are NA. The Status column marks the wells that were not tested. These wells are only shown if the remove_na argument of plate_plot() is set to FALSE.

Usage

data_continuous_48_incomplete

Format

A data frame with a Value, a well and a Status column.

Source

Randomly generated.


Continuous 6-well plate dataset

Description

A dataset containing 6 positive numeric values randomly generated using a normal distribution (rnorm()). Each value is assigned to a position in a 6-well plate. The Status column marks the well with a very low signal.

Usage

data_continuous_6

Format

A data frame with a Value, a well and a Status column.

Source

Randomly generated.


Continuous 96-well plate dataset

Description

A dataset containing 96 positive numeric values randomly generated using a normal distribution (rnorm()). Each value is assigned to a position in a 96-well plate. The Status column marks wells with a low signal.

Usage

data_continuous_96

Format

A data frame with a Value, a well and a Status column.

Source

Randomly generated.


Discrete 24-well plate dataset

Description

A dataset containing 12 conditions for an siRNA treatment in a 24-well plate. The siRNA treatment consists of a control (siControl) and 11 siRNAs targeting mRNAs of proteins in the mTORC1 pathway. Each treatment is assigned to a position in a 24-well plate. The Status column marks the knockdowns that did not work as expected.

Usage

data_discrete_24

Format

A data frame with a Condition, a well and a Status column.

Source

Theoretically possible siRNA treatment for cells.


Discrete 6-well plate dataset

Description

A dataset containing 3 conditions for a drug treatment in a 6-well plate. The treatment consists of a DMSO negative control, Rapamycin and Taxol. Each treatment is assigned to a position in a 6-well plate. The Control column marks the wells that contain the vehicle control.

Usage

data_discrete_6

Format

A data frame with a Condition, a well and a Control column.

Source

Theoretically possible treatment for cells.


Discrete 96-well plate dataset

Description

A dataset containing 22 conditions for a hypothetical drug treatment in a 96-well plate. The first column contains the positive control while the last column contains the negative control. Each treatment is assigned to four wells in a 96-well plate. The Replicate column contains the number of the replicate of each compound. The two controls have eight replicates, every other compound has four.

Usage

data_discrete_96

Format

A data frame with a Compound, a well, a Compound_multiline and a Replicate column.

Source

Drugs were chosen from a standard FDA approved drug library.


Plate Layout Plot

Description

Plots a culture plate or microplate in the desired format. Both continuous as well as discrete values can be displayed with colours and labels.

Usage

plate_plot(
  data,
  position,
  value,
  label,
  plate_size = 96,
  plate_type = "square",
  colour,
  remove_na = TRUE,
  na_fill = "grey50",
  limits,
  title,
  title_size,
  show_legend = TRUE,
  legend_n_row,
  label_size,
  silent = TRUE,
  scale,
  border,
  border_colour
)

Arguments

data

a data frame that contains at least a column with plate position information and a column with values or labels.

position

a character column in the data data frame that contains plate positions. These should be in the format: row = letter, column = number. So for example A1, D12 etc.

value

a character, factor or numeric column in the data data frame that contains values that should be plotted as colours on the plate layout. Can be the same column as label. If the column is a factor, the order of its levels determines the order of the legend and every level is assigned a colour, even if it is not present in the data.

label

a character or numeric column in the data data frame that contains values that should be plotted as labels on the plate layout. Can be the same column as value.

plate_size

a numeric value that specifies the plate size (number of wells) used for the plot. Possible values are: 6, 12, 24, 48, 96, 384 and 1536.

plate_type

a character value that specifies the well type. Possible values are "round" and "square". The default is "square".

colour

optional, a character vector that contains colours used for the plot. If the value argument is discrete the colours are used as provided. If it is continuous a gradient is created using the colours.

remove_na

a logical value specifying whether rows with missing values (NA) in the value column are removed from the input data. This will not remove any NA values created due to values outside of the limits. Default is TRUE.

na_fill

optional, a character value specifying the fill colour used for wells with missing values (NA) and, for continuous data, for values outside the range defined by limits. The default is "grey50".

limits

optional, a numeric vector of length two providing new limits for a colour gradient. Use NA to refer to the existing minimum or maximum. If this argument is not supplied the existing minimum and maximum of the values provided to the value argument are used for the start and end point of the colour gradient.

title

optional, a character value that contains the plot title.

title_size

optional, a numeric value that determines the text size of the title. The size is also affected by the scale argument.

show_legend

a logical value that specifies if the plot legend is shown. Default is TRUE.

legend_n_row

optional, a numeric value that specifies the maximum total number of rows used by the legends. If a legend for the border argument is shown, both legends share these rows. The number of legend columns is increased until both legends fit into the rows. If no value is provided, 20 rows are used, which is the number of rows ggplot2 fits into one legend column.

label_size

optional, a numeric value that determines the text size of the well labels. The size is also affected by the scale argument.

silent

a logical value that specifies if the function should report the size of the plotting area and the adjusted scale parameter. Default is TRUE meaning it will not return any message. The plot was optimized for a device size of: width = 5.572917 in and height = 3.177083 in, which was determined using the function par("fin"). This means if the device has these dimensions the scaling factor is 1.

scale

a numeric value that scales point sizes and labels of the plot. If not provided, the plot uses the device size to find the optimal scaling factor for the output, however, this might be slightly off (e.g. due to number of labels) and can be manually adjusted with this argument.

border

optional, a character, factor or numeric column in the data data frame that contains categories that should be plotted as colours of the well borders. This makes it possible to highlight individual wells. The categories are shown in a second legend below the legend of the value argument. Wells with a missing value (NA) keep the default black border and do not appear in the legend. If the column is a factor, the order of its levels determines the order of the legend.

border_colour

optional, a character vector that contains colours used for the borders of the wells. The colours are used as provided. If this argument is not supplied the border_colours scheme is used, which contains four colours that are visible on every fill colour of the plot.

Value

A plate layout plot.

Examples

library(dplyr)
library(tidyr)
library(stringr)

# Load example data
data("data_continuous_96")
data("data_continuous_384")
data("data_discrete_6")
data("data_discrete_24")

# Create a 96-well plot with round wells
plate_plot(
  data = data_continuous_96,
  position = well,
  value = Value,
  label = Value,
  plate_size = 96,
  plate_type = "round"
)

# Create a 384-well plot with square wells
# Define a custom lower limit
# Define a custom colour scheme
# Define a custom title with a custom size
plate_plot(
  data = data_continuous_384,
  position = well,
  value = Value,
  label = Value,
  plate_size = 384,
  colour = c("#000004FF", "#51127CFF", "#B63679FF", "#FB8861FF", "#FCFDBFFF"),
  limits = c(0, NA),
  title = "Custom Title",
  title_size = 20
)

# Create a 24-well plot
# Show a 6 row legend
# Scale the plot to 1.2
plate_plot(
  data = data_discrete_24,
  position = well,
  value = Condition,
  plate_size = 24,
  plate_type = "round",
  scale = 1.2,
  legend_n_row = 6
)

# Create a 6-well plot
# Define a custom colour scheme
# Adjust label_size to fit text
# Let the plot return width, height and scale
plate_plot(
  data = data_discrete_6,
  position = well,
  value = Condition,
  label = Condition,
  plate_size = 6,
  plate_type = "round",
  colour = c("#3a1c71", "#d76d77", "#ffaf7b"),
  label_size = 4,
  show_legend = FALSE,
  silent = FALSE
)

# Create a 24-well plot
# Highlight the borders of wells that did not pass the quality control
plate_plot(
  data = data_discrete_24,
  position = well,
  value = Condition,
  border = Status,
  plate_size = 24,
  plate_type = "round"
)

# Create a 1536-well plot with square wells
# Aa-Hd row labels
plate_plot(
  data = data_continuous_1536_Aa,
  position = well,
  value = Value,
  plate_size = 1536,
)


Colour scheme for protti

Description

A colour scheme from the protti package that contains 100 colours.

Usage

protti_colours

Format

A vector containing 100 colours

Source

protti R package.


Viridis colour scheme

Description

A colour scheme by the viridis colour scheme from the viridis R package.

Usage

viridis_colours

Format

A vector containing 256 colours

Source

viridis R package