‘ggplot2’ extension for making psychrometric charts.
You can install the released version of ggpsychro from CRAN with:
install.packages("ggpsychro")
You can install the development version from GitHub with:
# install.packages("remotes")
# remotes::install_github("hongyuanjia/ggpsychro")
install.packages("ggpsychro", repos = c('https://hongyuanjia.r-universe.dev', 'https://cloud.r-project.org'))
The creation of a psychrometric chart starts with ggpsychro(). The
result is a ggplot object, so grids, stats, geoms, scales, and themes
can be added with the same + workflow used by ggplot2.
ggpsychro(tdb_lim = c(0, 50), hum_lim = c(0, 30)) +
psychro_preset("minimal")

Comfort overlays can be added as regular layers. The PMV overlay combines root-traced filled bands, PMV isolines, and text labels on the same psychrometric chart.
ggpsychro(tdb_lim = c(5, 40), hum_lim = c(0, 24)) +
psychro_preset("minimal") +
geom_comfort_pmv(
contour_levels = seq(-3, 3, by = 0.5),
n = c(70, 48)
) +
scale_fill_comfort_pmv(name = "PMV")

The longer examples live on the pkgdown site:
ggpsychro’s recent chart-layout and higher-level layer work was informed by two excellent psychrometric chart projects:
ggpsychro does not vendor code from those projects. The implementation remains R/ggplot2-native, with psychrometric property calculations delegated to PsychroLib where appropriate.
Hongyuan Jia
The project is released under the terms of MIT License.
Copyright © 2019-2026 Hongyuan Jia
Please note that the ‘ggpsychro’ project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.