Provides plotting functions for visualizing pedigrees and family trees. The package complements a behavior genetics package 'BGmisc' [Garrison et al. (2024)
ggpedigree provides modern tools for visualizing family trees and
pedigree structures using both ggplot2 and plotly. Specifically, it
enables the creation of static and interactive pedigree plots that can
accommodate complex family relationships, including duplicated
individuals and various mating structures.
The package complements the behavior genetics toolkit BGmisc
[Garrison et al. (2024) doi:10.21105/joss.06203] for tasks such as
pedigree validation and computing relatedness matrices. Core plotting
functions (ggPedigree(), ggPedigreeInteractive(),
calculateCoordinates()) work on any rectangular pedigree and ship with
built-in example data, while relatedness workflows reuse matrix builders
from BGmisc. Due to the impending deprecation of kinship2, version
1.0 incorporates the layout helper functions from kinship2. The pedigree
alignment algorithms are adapted from ‘kinship2’ [Sinnwell et
al. (2014) doi:10.1159/000363105]. We gratefully acknowledge the
original authors: Jason Sinnwell, Terry Therneau, Daniel Schaid, and
Elizabeth Atkinson for their foundational work.
See the package vignettes for end-to-end tutorials, including relatedness matrices and interactive plots.
You can install the released version of ggpedigree from CRAN with:
install.packages("ggpedigree")
To install the development version of ggpedigree from
GitHub use:
# install.packages("pak")
pak::pkg_install("R-Computing-Lab/ggpedigree")
Here is a basic example of how to use ggpedigree to visualize a
pedigree structure. The potter dataset contains simulated pedigree
data for the Weasley family from the Harry Potter series.
library(ggpedigree) # ggPedigree lives here
library(BGmisc) # helper utilities & example data
potter <- BGmisc::potter # load example data
ggPedigree(potter,
famID = "famID",
personID = "personID"
)
ggPedigree(potter,
famID = "famID",
personID = "personID",
config = list(
color_theme = "greyscale"
)
)
If you use ggpedigree in your research or wish to refer to it, please cite the following:
citation(package = "ggpedigree")
Garrison, S. Mason (2026). “ggpedigree: Visualizing Pedigrees with ‘ggplot2’ and ‘plotly’.” Journal of Open Source Software, 11(9434). doi:10.21105/joss.09434 https://doi.org/10.21105/joss.09434. https://joss.theoj.org/papers/10.21105/joss.09434.
A BibTeX entry for LaTeX users is
@Article{ggpedigree,
title = {ggpedigree: Visualizing Pedigrees with 'ggplot2' and 'plotly'},
author = {{Garrison, S. Mason}},
journal = {Journal of Open Source Software},
year = {2026},
volume = {11},
number = {9434},
doi = {10.21105/joss.09434},
url = {https://joss.theoj.org/papers/10.21105/joss.09434},
}
Contributions to the ggpedigree project are welcome. For guidelines on how to contribute, please refer to the Contributing Guidelines. Issues and pull requests should be submitted on the GitHub repository. For support, please use the GitHub issues page.
The development of ggpedigree follows a GitFlow branching strategy:
dev branch is the main development
branch where all feature branches are merged. This branch contains the
latest changes and is used for testing and development purposes.main): The main branch mirrors the stable state of
the project as seen on CRAN. Only fully tested and approved changes
from the dev branch are merged into main to prepare for a new release.ggpedigree is licensed under the GNU General Public License v3.0. For more details, see the LICENSE.md file.