Using the tidyverse with terra objects
Using the tidyverse with terra objects: the tidyterra package - Published in JOSS (2023)
Science Score: 100.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 9 DOI reference(s) in README and JOSS metadata -
✓Academic publication links
Links to: joss.theoj.org -
✓Committers with academic emails
1 of 8 committers (12.5%) from academic institutions -
○Institutional organization owner
-
✓JOSS paper metadata
Published in Journal of Open Source Software
Keywords
cran
cran-r
ggplot-extension
r
r-package
r-spatial
rspatial
rstats
rstats-package
terra
Keywords from Contributors
meshing
standardization
ropensci
r-cran
citation-files
citation-file-format
cff
attribution
cryptocurrencies
parallel
Last synced: 4 months ago
·
JSON representation
·
Repository
tidyverse and ggplot2 methods for terra spatial objects
Basic Info
- Host: GitHub
- Owner: dieghernan
- License: other
- Language: R
- Default Branch: main
- Homepage: https://dieghernan.github.io/tidyterra/
- Size: 361 MB
Statistics
- Stars: 200
- Watchers: 8
- Forks: 11
- Open Issues: 12
- Releases: 19
Topics
cran
cran-r
ggplot-extension
r
r-package
r-spatial
rspatial
rstats
rstats-package
terra
Created over 3 years ago
· Last pushed 5 months ago
Metadata Files
Readme
Changelog
Contributing
Funding
License
Code of conduct
Citation
Codemeta
README.Rmd
---
output: github_document
---
```{r, include = FALSE}
knitr::opts_knit$set(
progress = TRUE,
base.url = "https://raw.githubusercontent.com/dieghernan/tidyterra/main/"
)
knitr::opts_chunk$set(
collapse = TRUE,
tidy = "styler",
comment = "#>",
fig.path = "img/README-",
warning = FALSE,
message = FALSE,
dev = "ragg_png",
dpi = 300,
out.width = "100%"
)
```
# tidyterra
[](https://CRAN.R-project.org/package=tidyterra)
[](https://cran.r-project.org/web/checks/check_results_tidyterra.html)
[](https://CRAN.R-project.org/package=tidyterra)
[](https://doi.org/10.21105/joss.05751)
[](https://github.com/dieghernan/tidyterra/actions/workflows/check-full.yaml)
[](https://github.com/dieghernan/tidyterra/actions/workflows/rhub.yaml)
[](https://app.codecov.io/gh/dieghernan/tidyterra)
[](https://www.codefactor.io/repository/github/dieghernan/tidyterra)
[](https://dieghernan.r-universe.dev/tidyterra)
[](https://www.repostatus.org/#active)
[](https://stackoverflow.com/questions/tagged/tidyterra)
[](https://github.com/dieghernan/tidyterra/actions/workflows/check-terra-devel.yaml)
[](https://github.com/dieghernan/tidyterra/actions/workflows/check-sf-devel.yaml)
[](https://github.com/dieghernan/tidyterra/actions/workflows/check-ggplot2-devel.yaml)
[](https://github.com/dieghernan/tidyterra/actions/workflows/check-dplyr-readr.yaml)
The goal of **tidyterra** is to provide common methods of the [**tidyverse**
packages](https://www.tidyverse.org/packages/) for objects created with the
[**terra**](https://CRAN.R-project.org/package=terra) package: `SpatRaster` and
`SpatVector`. It also provides `geoms` for plotting these objects with
[**ggplot2**](https://ggplot2.tidyverse.org/).
Please cite **tidyterra** as:
> Hernangómez, D., (2023). Using the tidyverse with terra objects: the tidyterra
> package. *Journal of Open Source Software*, *8*(91), 5751,
> .
A BibTeX entry for LaTeX users is:
``` bib
@article{Hernangómez2023,
doi = {10.21105/joss.05751},
url = {https://doi.org/10.21105/joss.05751},
year = {2023},
publisher = {The Open Journal},
volume = {8},
number = {91},
pages = {5751},
author = {Diego Hernangómez},
title = {Using the {tidyverse} with {terra} objects: the {tidyterra} package},
journal = {Journal of Open Source Software}
}
```
## Overview
Full manual of the most recent release of **tidyterra** on **CRAN** is online:
**tidyverse** methods implemented on **tidyterra** works differently depending
on the type of `Spat*` object:
- `SpatVector`: the methods are implemented using `terra::as.data.frame()`
coercion. Rows correspond to geometries and columns correspond to attributes
of the geometry.
- `SpatRaster`: The implementation on `SpatRaster` objects differs, since the
methods could be applied to layers or to cells. **tidyterra** overall
approach is to treat the layers as columns of a tibble and the cells as rows
(i.e. `select(SpatRaster, 1)` would select the first layer of a
`SpatRaster`).
The methods implemented return the same type of object used as input, unless the
expected behavior of the method is to return another type of object, (for
example, `as_tibble()` would return a `tibble`).
Current methods and functions provided by **tidyterra** are:
| tidyverse method | `SpatVector` | `SpatRaster` |
|----|----|----|
| `tibble::as_tibble()` | ✔️ | ✔️ |
| `dplyr::select()` | ✔️ | ✔️ Select layers |
| `dplyr::mutate()` | ✔️ | ✔️ Create /modify layers |
| `dplyr::transmute()` | ✔️ | ✔️ |
| `dplyr::filter()` | ✔️ | ✔️ Modify cells values and (additionally) remove outer cells. |
| `dplyr::slice()` | ✔️ | ✔️ Additional methods for slicing by row and column. |
| `dplyr::pull()` | ✔️ | ✔️ |
| `dplyr::rename()` | ✔️ | ✔️ |
| `dplyr::relocate()` | ✔️ | ✔️ |
| `dplyr::distinct()` | ✔️ | |
| `dplyr::arrange()` | ✔️ | |
| `dplyr::glimpse()` | ✔️ | ✔️ |
| `dplyr::inner_join()` family | ✔️ | |
| `dplyr::summarise()` | ✔️ | |
| `dplyr::group_by()` family | ✔️ | |
| `dplyr::rowwise()` | ✔️ | |
| `dplyr::count()`, `tally()` | ✔️ | |
| `dplyr::bind_cols()` / `dplyr::bind_rows()` | ✔️ as `bind_spat_cols()` / `bind_spat_rows()` | |
| `tidyr::drop_na()` | ✔️ | ✔️ Remove cell values with `NA` on any layer. Additionally, outer cells with `NA` are removed. |
| `tidyr::replace_na()` | ✔️ | ✔️ |
| `tidyr::fill()` | ✔️ | |
| `tidyr::pivot_longer()` | ✔️ | |
| `tidyr::pivot_wider()` | ✔️ | |
| `ggplot2::autoplot()` | ✔️ | ✔️ |
| `ggplot2::fortify()` | ✔️ to **sf** via `sf::st_as_sf()` | To a **tibble** with coordinates. |
| `ggplot2::geom_*()` | ✔️ `geom_spatvector()` | ✔️ `geom_spatraster()` and `geom_spatraster_rgb()`. |
## :exclamation: A note on performance
**tidyterra** is conceived as a user-friendly wrapper of **terra** using the
**tidyverse** methods and verbs. This approach therefore has a **cost in terms
of performance**.
If you are a **heavy user** of **terra** or you need to work with **big raster
files**, **terra** is much more focused on terms of performance. When possible,
each function of **tidyterra** references to its equivalent on **terra**.
As a rule of thumb if your raster has less than 10.000.000 data slots counting
cells and layers (i.e. `terra::ncell(your_rast)*terra::nlyr(your_rast) < 10e6`)
you are good to go with **tidyterra**.
When plotting rasters, resampling is performed automatically (as `terra::plot()`
does, see the help page). You can adjust this with the `maxcell` parameter.
## Installation
Install **tidyterra** from
[**CRAN**](https://CRAN.R-project.org/package=tidyterra):
```{r, eval=FALSE}
install.packages("tidyterra")
```
You can install the development version of **tidyterra** like so:
```{r, eval=FALSE }
# install.packages("pak")
pak::pak("dieghernan/tidyterra")
```
Alternatively, you can install **tidyterra** using the
[r-universe](https://dieghernan.r-universe.dev/tidyterra):
```{r, eval=FALSE}
# Enable this universe
install.packages("tidyterra", repos = c(
"https://dieghernan.r-universe.dev",
"https://cloud.r-project.org"
))
```
## Example
### `SpatRasters`
This is a basic example which shows you how to manipulate and plot `SpatRaster`
objects:
```{r example-temp}
library(tidyterra)
library(terra)
# Temperatures
rastertemp <- rast(system.file("extdata/cyl_temp.tif", package = "tidyterra"))
rastertemp
# Rename
rastertemp <- rastertemp %>%
rename(April = tavg_04, May = tavg_05, June = tavg_06)
# Facet all layers
library(ggplot2)
ggplot() +
geom_spatraster(data = rastertemp) +
facet_wrap(~lyr, ncol = 2) +
scale_fill_whitebox_c(
palette = "muted",
labels = scales::label_number(suffix = "º"),
n.breaks = 12,
guide = guide_legend(reverse = TRUE)
) +
labs(
fill = "",
title = "Average temperature in Castille and Leon (Spain)",
subtitle = "Months of April, May and June"
)
# Create maximum differences of two months
variation <- rastertemp %>%
mutate(diff = June - May) %>%
select(variation = diff)
# Add also a overlay of a SpatVector
prov <- vect(system.file("extdata/cyl.gpkg", package = "tidyterra"))
ggplot(prov) +
geom_spatraster(data = variation) +
geom_spatvector(fill = NA) +
scale_fill_whitebox_c(
palette = "deep", direction = -1,
labels = scales::label_number(suffix = "º"),
n.breaks = 5
) +
theme_minimal() +
coord_sf(crs = 25830) +
labs(
fill = "Variation",
title = "Variation of Temperature in Castile and León (Spain)",
subtitle = "Average Temperatures: June vs. May"
)
```
**tidyterra** also provides a geom for plotting RGB `SpatRaster` tiles with
**ggplot2**:
```{r example-tile}
rgb_tile <- rast(system.file("extdata/cyl_tile.tif", package = "tidyterra"))
plot <- ggplot(prov) +
geom_spatraster_rgb(data = rgb_tile) +
geom_spatvector(fill = NA) +
theme_light()
plot
# Automatically recognizes and applies coord_sf() for spatial data.
plot +
# Change the CRS and datum (useful for relabeling graticules).
coord_sf(crs = 3857, datum = 3857)
```
**tidyterra** provides specific scales for plotting hypsometric maps with
**ggplot2**:
```{r hypso, fig.asp=0.65}
asia <- rast(system.file("extdata/asia.tif", package = "tidyterra"))
terra::plot(asia)
ggplot() +
geom_spatraster(data = asia) +
scale_fill_hypso_tint_c(
palette = "gmt_globe",
labels = scales::label_number(),
# Further refinements
breaks = c(-10000, -5000, 0, 2000, 5000, 8000),
guide = guide_colorbar(reverse = TRUE)
) +
labs(
fill = "elevation (m)",
title = "Hypsometric map of Asia"
) +
theme(
legend.position = "bottom",
legend.title.position = "top",
legend.key.width = rel(3),
legend.ticks = element_line(colour = "black", linewidth = 0.3),
legend.direction = "horizontal"
)
```
### `SpatVectors`
This is a basic example which shows you how to manipulate and plot `SpatVector`
objects:
```{r spatvec }
vect(system.file("ex/lux.shp", package = "terra")) %>%
mutate(pop_dens = POP / AREA) %>%
glimpse() %>%
autoplot(aes(fill = pop_dens)) +
scale_fill_whitebox_c(palette = "pi_y_g") +
labs(
fill = "population per km2",
title = "Population density of Luxembourg",
subtitle = "By canton"
)
```
## I need your feedback
Please leave your feedback or open an issue on
.
## Need help?
Check our [FAQs](https://dieghernan.github.io/tidyterra/articles/faqs.html) or
open a new [issue](https://github.com/dieghernan/tidyterra/issues)!
You can also ask in [Stack Overflow](https://stackoverflow.com/) using the tag
[[tidyterra]](https://stackoverflow.com/questions/tagged/tidyterra).
## Acknowledgement
**tidyterra** **ggplot2** geoms are based on
[**ggspatial**](https://github.com/paleolimbot/ggspatial) implementation, by
[Dewey Dunnington](https://github.com/paleolimbot) and [**ggspatial**
contributors](https://github.com/paleolimbot/ggspatial/graphs/contributors).
Owner
- Name: Diego H.
- Login: dieghernan
- Kind: user
- Location: Madrid, ES
- Website: https://dieghernan.github.io/
- Twitter: dhernangomez
- Repositories: 102
- Profile: https://github.com/dieghernan
JOSS Publication
Using the tidyverse with terra objects: the tidyterra package
Published
November 10, 2023
Volume 8, Issue 91, Page 5751
Tags
R CRAN spatial vector raster tidyverse terra ggplot2Citation (CITATION.cff)
# --------------------------------------------
# CITATION file created with {cffr} R package
# See also: https://docs.ropensci.org/cffr/
# --------------------------------------------
cff-version: 1.2.0
message: 'To cite package "tidyterra" in publications use:'
type: software
license: MIT
title: 'tidyterra: ''tidyverse'' Methods and ''ggplot2'' Helpers for ''terra'' Objects'
version: 0.7.2
doi: 10.21105/joss.05751
identifiers:
- type: doi
value: 10.32614/CRAN.package.tidyterra
abstract: Extension of the 'tidyverse' for 'SpatRaster' and 'SpatVector' objects of
the 'terra' package. It includes also new 'geom_' functions that provide a convenient
way of visualizing 'terra' objects with 'ggplot2'.
authors:
- family-names: Hernangómez
given-names: Diego
email: diego.hernangomezherrero@gmail.com
orcid: https://orcid.org/0000-0001-8457-4658
preferred-citation:
type: article
title: 'Using the tidyverse with terra objects: the tidyterra package'
authors:
- family-names: Hernangómez
given-names: Diego
email: diego.hernangomezherrero@gmail.com
orcid: https://orcid.org/0000-0001-8457-4658
doi: 10.21105/joss.05751
year: '2023'
url: https://doi.org/10.21105/joss.05751
publisher:
name: The Open Journal
volume: '8'
issue: '91'
journal: Journal of Open Source Software
issn: 2475-9066
start: '5751'
repository: https://CRAN.R-project.org/package=tidyterra
repository-code: https://github.com/dieghernan/tidyterra
url: https://dieghernan.github.io/tidyterra/
contact:
- family-names: Hernangómez
given-names: Diego
email: diego.hernangomezherrero@gmail.com
orcid: https://orcid.org/0000-0001-8457-4658
keywords:
- r
- terra
- ggplot-extension
- r-spatial
- rspatial
- cran
- cran-r
- r-package
- rstats
- rstats-package
references:
- type: software
title: 'R: A Language and Environment for Statistical Computing'
notes: Depends
url: https://www.R-project.org/
authors:
- name: R Core Team
institution:
name: R Foundation for Statistical Computing
address: Vienna, Austria
year: '2025'
version: '>= 3.6.0'
- type: software
title: cli
abstract: 'cli: Helpers for Developing Command Line Interfaces'
notes: Imports
url: https://cli.r-lib.org
repository: https://CRAN.R-project.org/package=cli
authors:
- family-names: Csárdi
given-names: Gábor
email: gabor@posit.co
year: '2025'
doi: 10.32614/CRAN.package.cli
version: '>= 3.0.0'
- type: software
title: data.table
abstract: 'data.table: Extension of `data.frame`'
notes: Imports
url: https://r-datatable.com
repository: https://CRAN.R-project.org/package=data.table
authors:
- family-names: Barrett
given-names: Tyson
email: t.barrett88@gmail.com
orcid: https://orcid.org/0000-0002-2137-1391
- family-names: Dowle
given-names: Matt
email: mattjdowle@gmail.com
- family-names: Srinivasan
given-names: Arun
email: asrini@pm.me
- family-names: Gorecki
given-names: Jan
- family-names: Chirico
given-names: Michael
orcid: https://orcid.org/0000-0003-0787-087X
- family-names: Hocking
given-names: Toby
orcid: https://orcid.org/0000-0002-3146-0865
- family-names: Schwendinger
given-names: Benjamin
orcid: https://orcid.org/0000-0003-3315-8114
- family-names: Krylov
given-names: Ivan
email: ikrylov@disroot.org
orcid: https://orcid.org/0000-0002-0172-3812
year: '2025'
doi: 10.32614/CRAN.package.data.table
- type: software
title: dplyr
abstract: 'dplyr: A Grammar of Data Manipulation'
notes: Imports
url: https://dplyr.tidyverse.org
repository: https://CRAN.R-project.org/package=dplyr
authors:
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
orcid: https://orcid.org/0000-0003-4757-117X
- family-names: François
given-names: Romain
orcid: https://orcid.org/0000-0002-2444-4226
- family-names: Henry
given-names: Lionel
- family-names: Müller
given-names: Kirill
orcid: https://orcid.org/0000-0002-1416-3412
- family-names: Vaughan
given-names: Davis
email: davis@posit.co
orcid: https://orcid.org/0000-0003-4777-038X
year: '2025'
doi: 10.32614/CRAN.package.dplyr
version: '>= 1.0.0'
- type: software
title: ggplot2
abstract: 'ggplot2: Create Elegant Data Visualisations Using the Grammar of Graphics'
notes: Imports
url: https://ggplot2.tidyverse.org
repository: https://CRAN.R-project.org/package=ggplot2
authors:
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
orcid: https://orcid.org/0000-0003-4757-117X
- family-names: Chang
given-names: Winston
orcid: https://orcid.org/0000-0002-1576-2126
- family-names: Henry
given-names: Lionel
- family-names: Pedersen
given-names: Thomas Lin
email: thomas.pedersen@posit.co
orcid: https://orcid.org/0000-0002-5147-4711
- family-names: Takahashi
given-names: Kohske
- family-names: Wilke
given-names: Claus
orcid: https://orcid.org/0000-0002-7470-9261
- family-names: Woo
given-names: Kara
orcid: https://orcid.org/0000-0002-5125-4188
- family-names: Yutani
given-names: Hiroaki
orcid: https://orcid.org/0000-0002-3385-7233
- family-names: Dunnington
given-names: Dewey
orcid: https://orcid.org/0000-0002-9415-4582
- family-names: Brand
given-names: Teun
name-particle: van den
orcid: https://orcid.org/0000-0002-9335-7468
year: '2025'
doi: 10.32614/CRAN.package.ggplot2
version: '>= 3.5.0'
- type: software
title: magrittr
abstract: 'magrittr: A Forward-Pipe Operator for R'
notes: Imports
url: https://magrittr.tidyverse.org
repository: https://CRAN.R-project.org/package=magrittr
authors:
- family-names: Bache
given-names: Stefan Milton
email: stefan@stefanbache.dk
- family-names: Wickham
given-names: Hadley
email: hadley@rstudio.com
year: '2025'
doi: 10.32614/CRAN.package.magrittr
- type: software
title: rlang
abstract: 'rlang: Functions for Base Types and Core R and ''Tidyverse'' Features'
notes: Imports
url: https://rlang.r-lib.org
repository: https://CRAN.R-project.org/package=rlang
authors:
- family-names: Henry
given-names: Lionel
email: lionel@posit.co
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
year: '2025'
doi: 10.32614/CRAN.package.rlang
- type: software
title: scales
abstract: 'scales: Scale Functions for Visualization'
notes: Imports
url: https://scales.r-lib.org
repository: https://CRAN.R-project.org/package=scales
authors:
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
- family-names: Pedersen
given-names: Thomas Lin
email: thomas.pedersen@posit.co
orcid: https://orcid.org/0000-0002-5147-4711
- family-names: Seidel
given-names: Dana
year: '2025'
doi: 10.32614/CRAN.package.scales
- type: software
title: sf
abstract: 'sf: Simple Features for R'
notes: Imports
url: https://r-spatial.github.io/sf/
repository: https://CRAN.R-project.org/package=sf
authors:
- family-names: Pebesma
given-names: Edzer
email: edzer.pebesma@uni-muenster.de
orcid: https://orcid.org/0000-0001-8049-7069
year: '2025'
doi: 10.32614/CRAN.package.sf
version: '>= 1.0.0'
- type: software
title: terra
abstract: 'terra: Spatial Data Analysis'
notes: Imports
url: https://rspatial.org/
repository: https://CRAN.R-project.org/package=terra
authors:
- family-names: Hijmans
given-names: Robert J.
email: r.hijmans@gmail.com
orcid: https://orcid.org/0000-0001-5872-2872
year: '2025'
doi: 10.32614/CRAN.package.terra
version: '>= 1.8-10'
- type: software
title: tibble
abstract: 'tibble: Simple Data Frames'
notes: Imports
url: https://tibble.tidyverse.org/
repository: https://CRAN.R-project.org/package=tibble
authors:
- family-names: Müller
given-names: Kirill
email: kirill@cynkra.com
orcid: https://orcid.org/0000-0002-1416-3412
- family-names: Wickham
given-names: Hadley
email: hadley@rstudio.com
year: '2025'
doi: 10.32614/CRAN.package.tibble
version: '>= 3.0.0'
- type: software
title: tidyr
abstract: 'tidyr: Tidy Messy Data'
notes: Imports
url: https://tidyr.tidyverse.org
repository: https://CRAN.R-project.org/package=tidyr
authors:
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
- family-names: Vaughan
given-names: Davis
email: davis@posit.co
- family-names: Girlich
given-names: Maximilian
year: '2025'
doi: 10.32614/CRAN.package.tidyr
version: '>= 1.0.0'
- type: software
title: hexbin
abstract: 'hexbin: Hexagonal Binning Routines'
notes: Suggests
url: https://github.com/edzer/hexbin
repository: https://CRAN.R-project.org/package=hexbin
authors:
- family-names: Carr
given-names: Dan
email: dcarr@voxel.galaxy.gmu.edu
- family-names: Lewin-Koh
given-names: Nicholas
- family-names: Maechler
given-names: Martin
email: maechler@stat.math.ethz.ch
- family-names: Sarkar
given-names: Deepayan
email: deepayan.sarkar@r-project.org
year: '2025'
doi: 10.32614/CRAN.package.hexbin
- type: software
title: isoband
abstract: 'isoband: Generate Isolines and Isobands from Regularly Spaced Elevation
Grids'
notes: Suggests
url: https://isoband.r-lib.org
repository: https://CRAN.R-project.org/package=isoband
authors:
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
orcid: https://orcid.org/0000-0003-4757-117X
- family-names: Wilke
given-names: Claus O.
email: wilke@austin.utexas.edu
orcid: https://orcid.org/0000-0002-7470-9261
- family-names: Pedersen
given-names: Thomas Lin
email: thomasp85@gmail.com
orcid: https://orcid.org/0000-0002-5147-4711
year: '2025'
doi: 10.32614/CRAN.package.isoband
- type: software
title: knitr
abstract: 'knitr: A General-Purpose Package for Dynamic Report Generation in R'
notes: Suggests
url: https://yihui.org/knitr/
repository: https://CRAN.R-project.org/package=knitr
authors:
- family-names: Xie
given-names: Yihui
email: xie@yihui.name
orcid: https://orcid.org/0000-0003-0645-5666
year: '2025'
doi: 10.32614/CRAN.package.knitr
- type: software
title: lifecycle
abstract: 'lifecycle: Manage the Life Cycle of your Package Functions'
notes: Suggests
url: https://lifecycle.r-lib.org/
repository: https://CRAN.R-project.org/package=lifecycle
authors:
- family-names: Henry
given-names: Lionel
email: lionel@posit.co
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
orcid: https://orcid.org/0000-0003-4757-117X
year: '2025'
doi: 10.32614/CRAN.package.lifecycle
- type: software
title: maptiles
abstract: 'maptiles: Download and Display Map Tiles'
notes: Suggests
url: https://github.com/riatelab/maptiles/
repository: https://CRAN.R-project.org/package=maptiles
authors:
- family-names: Giraud
given-names: Timothée
email: timothee.giraud@cnrs.fr
orcid: https://orcid.org/0000-0002-1932-3323
year: '2025'
doi: 10.32614/CRAN.package.maptiles
- type: software
title: rmarkdown
abstract: 'rmarkdown: Dynamic Documents for R'
notes: Suggests
url: https://pkgs.rstudio.com/rmarkdown/
repository: https://CRAN.R-project.org/package=rmarkdown
authors:
- family-names: Allaire
given-names: JJ
email: jj@posit.co
- family-names: Xie
given-names: Yihui
email: xie@yihui.name
orcid: https://orcid.org/0000-0003-0645-5666
- family-names: Dervieux
given-names: Christophe
email: cderv@posit.co
orcid: https://orcid.org/0000-0003-4474-2498
- family-names: McPherson
given-names: Jonathan
email: jonathan@posit.co
- family-names: Luraschi
given-names: Javier
- family-names: Ushey
given-names: Kevin
email: kevin@posit.co
- family-names: Atkins
given-names: Aron
email: aron@posit.co
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
- family-names: Cheng
given-names: Joe
email: joe@posit.co
- family-names: Chang
given-names: Winston
email: winston@posit.co
- family-names: Iannone
given-names: Richard
email: rich@posit.co
orcid: https://orcid.org/0000-0003-3925-190X
year: '2025'
doi: 10.32614/CRAN.package.rmarkdown
- type: software
title: s2
abstract: 's2: Spherical Geometry Operators Using the S2 Geometry Library'
notes: Suggests
url: https://r-spatial.github.io/s2/
repository: https://CRAN.R-project.org/package=s2
authors:
- family-names: Dunnington
given-names: Dewey
email: dewey@fishandwhistle.net
orcid: https://orcid.org/0000-0002-9415-4582
- family-names: Pebesma
given-names: Edzer
email: edzer.pebesma@uni-muenster.de
orcid: https://orcid.org/0000-0001-8049-7069
- family-names: Rubak
given-names: Ege
email: rubak@math.aau.dk
year: '2025'
doi: 10.32614/CRAN.package.s2
- type: software
title: testthat
abstract: 'testthat: Unit Testing for R'
notes: Suggests
url: https://testthat.r-lib.org
repository: https://CRAN.R-project.org/package=testthat
authors:
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
year: '2025'
doi: 10.32614/CRAN.package.testthat
version: '>= 3.0.0'
- type: software
title: vctrs
abstract: 'vctrs: Vector Helpers'
notes: Suggests
url: https://vctrs.r-lib.org/
repository: https://CRAN.R-project.org/package=vctrs
authors:
- family-names: Wickham
given-names: Hadley
email: hadley@posit.co
- family-names: Henry
given-names: Lionel
email: lionel@posit.co
- family-names: Vaughan
given-names: Davis
email: davis@posit.co
year: '2025'
doi: 10.32614/CRAN.package.vctrs
- type: software
title: vdiffr
abstract: 'vdiffr: Visual Regression Testing and Graphical Diffing'
notes: Suggests
url: https://vdiffr.r-lib.org/
repository: https://CRAN.R-project.org/package=vdiffr
authors:
- family-names: Henry
given-names: Lionel
email: lionel@posit.co
- family-names: Pedersen
given-names: Thomas Lin
email: thomas.pedersen@posit.co
orcid: https://orcid.org/0000-0002-5147-4711
- family-names: Luciani
given-names: T Jake
email: jake@apache.org
- family-names: Decorde
given-names: Matthieu
email: matthieu.decorde@ens-lyon.fr
- family-names: Lise
given-names: Vaudor
email: lise.vaudor@ens-lyon.fr
year: '2025'
doi: 10.32614/CRAN.package.vdiffr
CodeMeta (codemeta.json)
{
"@context": "https://doi.org/10.5063/schema/codemeta-2.0",
"@type": "SoftwareSourceCode",
"identifier": "tidyterra",
"description": "Extension of the 'tidyverse' for 'SpatRaster' and 'SpatVector' objects of the 'terra' package. It includes also new 'geom_' functions that provide a convenient way of visualizing 'terra' objects with 'ggplot2'.",
"name": "tidyterra: 'tidyverse' Methods and 'ggplot2' Helpers for 'terra' Objects",
"relatedLink": [
"https://dieghernan.github.io/tidyterra/",
"https://CRAN.R-project.org/package=tidyterra"
],
"codeRepository": "https://github.com/dieghernan/tidyterra",
"issueTracker": "https://github.com/dieghernan/tidyterra/issues",
"license": "https://spdx.org/licenses/MIT",
"version": "0.7.2.9000",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "R",
"url": "https://r-project.org"
},
"runtimePlatform": "R version 4.5.1 (2025-06-13 ucrt)",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"author": [
{
"@type": "Person",
"givenName": "Diego",
"familyName": "Hernangómez",
"email": "diego.hernangomezherrero@gmail.com",
"@id": "https://orcid.org/0000-0001-8457-4658"
}
],
"contributor": [
{
"@type": "Person",
"givenName": "Dewey",
"familyName": "Dunnington",
"@id": "https://orcid.org/0000-0002-9415-4582"
},
{
"@type": "Person",
"givenName": "Andrea",
"familyName": "Manica"
}
],
"copyrightHolder": [
{
"@type": "Person",
"givenName": "Diego",
"familyName": "Hernangómez",
"email": "diego.hernangomezherrero@gmail.com",
"@id": "https://orcid.org/0000-0001-8457-4658"
},
{
"@type": "Organization",
"name": "ggplot2 authors"
}
],
"maintainer": [
{
"@type": "Person",
"givenName": "Diego",
"familyName": "Hernangómez",
"email": "diego.hernangomezherrero@gmail.com",
"@id": "https://orcid.org/0000-0001-8457-4658"
}
],
"softwareSuggestions": [
{
"@type": "SoftwareApplication",
"identifier": "hexbin",
"name": "hexbin",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=hexbin"
},
{
"@type": "SoftwareApplication",
"identifier": "isoband",
"name": "isoband",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=isoband"
},
{
"@type": "SoftwareApplication",
"identifier": "knitr",
"name": "knitr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=knitr"
},
{
"@type": "SoftwareApplication",
"identifier": "lifecycle",
"name": "lifecycle",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=lifecycle"
},
{
"@type": "SoftwareApplication",
"identifier": "maptiles",
"name": "maptiles",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=maptiles"
},
{
"@type": "SoftwareApplication",
"identifier": "rmarkdown",
"name": "rmarkdown",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=rmarkdown"
},
{
"@type": "SoftwareApplication",
"identifier": "s2",
"name": "s2",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=s2"
},
{
"@type": "SoftwareApplication",
"identifier": "testthat",
"name": "testthat",
"version": ">= 3.0.0",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=testthat"
},
{
"@type": "SoftwareApplication",
"identifier": "vctrs",
"name": "vctrs",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=vctrs"
},
{
"@type": "SoftwareApplication",
"identifier": "vdiffr",
"name": "vdiffr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=vdiffr"
}
],
"softwareRequirements": {
"1": {
"@type": "SoftwareApplication",
"identifier": "R",
"name": "R",
"version": ">= 3.6.0"
},
"2": {
"@type": "SoftwareApplication",
"identifier": "cli",
"name": "cli",
"version": ">= 3.0.0",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=cli"
},
"3": {
"@type": "SoftwareApplication",
"identifier": "data.table",
"name": "data.table",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=data.table"
},
"4": {
"@type": "SoftwareApplication",
"identifier": "dplyr",
"name": "dplyr",
"version": ">= 1.0.0",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=dplyr"
},
"5": {
"@type": "SoftwareApplication",
"identifier": "ggplot2",
"name": "ggplot2",
"version": ">= 3.5.0",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=ggplot2"
},
"6": {
"@type": "SoftwareApplication",
"identifier": "magrittr",
"name": "magrittr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=magrittr"
},
"7": {
"@type": "SoftwareApplication",
"identifier": "rlang",
"name": "rlang",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=rlang"
},
"8": {
"@type": "SoftwareApplication",
"identifier": "scales",
"name": "scales",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=scales"
},
"9": {
"@type": "SoftwareApplication",
"identifier": "sf",
"name": "sf",
"version": ">= 1.0.0",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=sf"
},
"10": {
"@type": "SoftwareApplication",
"identifier": "terra",
"name": "terra",
"version": ">= 1.8-10",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=terra"
},
"11": {
"@type": "SoftwareApplication",
"identifier": "tibble",
"name": "tibble",
"version": ">= 3.0.0",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=tibble"
},
"12": {
"@type": "SoftwareApplication",
"identifier": "tidyr",
"name": "tidyr",
"version": ">= 1.0.0",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=tidyr"
},
"SystemRequirements": null
},
"keywords": [
"r",
"terra",
"ggplot-extension",
"r-spatial",
"rspatial",
"cran",
"cran-r",
"r-package",
"rstats",
"rstats-package"
],
"fileSize": "2412.211KB",
"citation": [
{
"@type": "ScholarlyArticle",
"datePublished": "2023",
"author": [
{
"@type": "Person",
"givenName": "Diego",
"familyName": "Hernangómez"
}
],
"name": "Using the {tidyverse} with {terra} objects: the {tidyterra} package",
"identifier": "10.21105/joss.05751",
"url": "https://doi.org/10.21105/joss.05751",
"pagination": "5751",
"@id": "https://doi.org/10.21105/joss.05751",
"sameAs": "https://doi.org/10.21105/joss.05751",
"isPartOf": {
"@type": "PublicationIssue",
"issueNumber": "91",
"datePublished": "2023",
"isPartOf": {
"@type": [
"PublicationVolume",
"Periodical"
],
"volumeNumber": "8",
"name": "Journal of Open Source Software"
}
}
}
],
"releaseNotes": "https://github.com/dieghernan/tidyterra/blob/main/NEWS.md",
"readme": "https://github.com/dieghernan/tidyterra/blob/main/README.md",
"contIntegration": [
"https://github.com/dieghernan/tidyterra/actions/workflows/check-full.yaml",
"https://github.com/dieghernan/tidyterra/actions/workflows/rhub.yaml",
"https://app.codecov.io/gh/dieghernan/tidyterra",
"https://github.com/dieghernan/tidyterra/actions/workflows/check-terra-devel.yaml",
"https://github.com/dieghernan/tidyterra/actions/workflows/check-sf-devel.yaml",
"https://github.com/dieghernan/tidyterra/actions/workflows/check-ggplot2-devel.yaml",
"https://github.com/dieghernan/tidyterra/actions/workflows/check-dplyr-readr.yaml"
],
"developmentStatus": "https://www.repostatus.org/#active"
}
GitHub Events
Total
- Create event: 13
- Release event: 3
- Issues event: 17
- Watch event: 25
- Delete event: 11
- Issue comment event: 23
- Push event: 169
- Pull request review event: 5
- Pull request review comment event: 9
- Pull request event: 23
- Fork event: 5
Last Year
- Create event: 13
- Release event: 3
- Issues event: 17
- Watch event: 25
- Delete event: 11
- Issue comment event: 23
- Push event: 169
- Pull request review event: 5
- Pull request review comment event: 9
- Pull request event: 23
- Fork event: 5
Committers
Last synced: 5 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Diego H | d****o@g****m | 363 |
| github-actions[bot] | 4****] | 72 |
| dependabot[bot] | 4****] | 5 |
| ImgBotApp | I****p@g****m | 2 |
| Andrea Manica | a****5@c****k | 2 |
| Teun van den Brand | t****d@g****m | 1 |
| Fan-iX | 6****X | 1 |
| unknown | 1 |
Committer Domains (Top 20 + Academic)
cam.ac.uk: 1
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 74
- Total pull requests: 115
- Average time to close issues: 26 days
- Average time to close pull requests: 10 days
- Total issue authors: 34
- Total pull request authors: 7
- Average comments per issue: 1.68
- Average comments per pull request: 0.98
- Merged pull requests: 90
- Bot issues: 4
- Bot pull requests: 23
Past Year
- Issues: 13
- Pull requests: 24
- Average time to close issues: 9 days
- Average time to close pull requests: about 14 hours
- Issue authors: 9
- Pull request authors: 5
- Average comments per issue: 0.46
- Average comments per pull request: 0.96
- Merged pull requests: 16
- Bot issues: 0
- Bot pull requests: 7
Top Authors
Issue Authors
- dieghernan (30)
- aloboa (5)
- github-actions[bot] (4)
- Breeze-Hu (2)
- schonhose (2)
- DidDrog11 (2)
- danbebber (2)
- Shrubner (1)
- nipnipj (1)
- mengjiezhang4ds (1)
- claudehspencer (1)
- jamiemkass (1)
- tigerwang1998 (1)
- pvjeetze (1)
- kongdd (1)
Pull Request Authors
- dieghernan (81)
- imgbot[bot] (17)
- dependabot[bot] (5)
- Fan-iX (4)
- dramanica (2)
- teunbrand (2)
- espinielli (1)
Top Labels
Issue Labels
📊 ggplot2 (17)
❔ q&a (6)
bug (5)
enhancement (5)
⇝ spatvector (4)
documentation (2)
good first issue (2)
help wanted (2)
🛠dplyr (1)
🏼 spatraster (1)
duplicate (1)
bot (1)
Pull Request Labels
enhancement (24)
📊 ggplot2 (11)
🛠dplyr (8)
⇝ spatvector (5)
dependencies (5)
coercing (4)
🧹tidyr (4)
bug (2)
📑 tibble (2)
documentation (2)
🏼 spatraster (1)
github_actions (1)
Packages
- Total packages: 2
-
Total downloads:
- cran 8,769 last-month
- Total docker downloads: 81
-
Total dependent packages: 17
(may contain duplicates) -
Total dependent repositories: 20
(may contain duplicates) - Total versions: 36
- Total maintainers: 1
proxy.golang.org: github.com/dieghernan/tidyterra
- Documentation: https://pkg.go.dev/github.com/dieghernan/tidyterra#section-documentation
- License: other
-
Latest release: v0.7.2
published 9 months ago
Rankings
Dependent packages count: 5.5%
Average: 5.6%
Dependent repos count: 5.8%
Last synced:
4 months ago
cran.r-project.org: tidyterra
'tidyverse' Methods and 'ggplot2' Helpers for 'terra' Objects
- Homepage: https://dieghernan.github.io/tidyterra/
- Documentation: http://cran.r-project.org/web/packages/tidyterra/tidyterra.pdf
- License: MIT + file LICENSE
-
Latest release: 0.7.2
published 9 months ago
Rankings
Stargazers count: 2.8%
Dependent packages count: 4.6%
Downloads: 5.5%
Dependent repos count: 6.3%
Average: 9.4%
Forks count: 12.2%
Docker downloads count: 25.1%
Maintainers (1)
Last synced:
4 months ago
Dependencies
DESCRIPTION
cran
- R >= 3.6.0 depends
- cli >= 3.0.0 imports
- crayon * imports
- data.table * imports
- dplyr * imports
- ggplot2 >= 3.1.0 imports
- magrittr * imports
- rlang * imports
- scales * imports
- sf >= 1.0.0 imports
- terra >= 1.5 imports
- tibble * imports
- tidyr * imports
- isoband * suggests
- knitr * suggests
- lifecycle * suggests
- maptiles * suggests
- rmarkdown * suggests
- s2 * suggests
- testthat >= 3.0.0 suggests
- vdiffr * suggests
.github/workflows/cran-status-check.yaml
actions
- actions/checkout v3 composite
- dieghernan/cran-status-check v1 composite
.github/workflows/revdepcheck.yaml
actions
- actions/checkout v3 composite
- r-lib/actions/setup-pandoc v2 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/check-full.yaml
actions
- actions/checkout v3 composite
- r-lib/actions/check-r-package v2 composite
- r-lib/actions/setup-pandoc v2 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/check-terra-devel.yaml
actions
- actions/checkout v3 composite
- r-lib/actions/check-r-package v2 composite
- r-lib/actions/setup-pandoc v2 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/lint.yaml
actions
- actions/checkout v3 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/pkgdown-gh-pages-clean.yaml
actions
- actions/checkout v3 composite
- r-lib/actions/setup-pandoc v2 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/pkgdown-gh-pages.yaml
actions
- actions/checkout v3 composite
- r-lib/actions/setup-pandoc v2 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/test-coverage.yaml
actions
- actions/checkout v3 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/update-docs.yaml
actions
- actions/checkout v3 composite
- r-lib/actions/check-r-package v2 composite
- r-lib/actions/setup-pandoc v2 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite
