• Stars
    star
    130
  • Rank 277,575 (Top 6 %)
  • Language
    C++
  • License
    Other
  • Created almost 6 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

isoband: An R package to generate contour lines and polygons.

isoband

CRAN status R-CMD-check Codecov test coverage

Generate contour lines (isolines) and contour polygons (isobands) from regularly spaced grids containing elevation data. Package originally written by Claus Wilke and donated to r-lib in 2022.

Installation

Install the latest official release from CRAN via:

install.packages("isoband")

Install the current development from github via:

# install.packages("pak")
pak::pak("r-lib/isoband")

Examples

The two main workhorses of the package are the functions isolines() and isobands(), respectively. They return a list of isolines/isobands for each isolevel specified. Each isoline/isoband consists of vectors of x and y coordinates, as well as a vector of ids specifying which sets of coordinates should be connected. This format can be handed directly to grid.polyline()/grid.path() for drawing. However, we can also convert the output to spatial features and draw with ggplot2 (see below).

library(isoband)

m <- matrix(c(0, 0, 0, 0, 0,
              0, 1, 2, 1, 0,
              0, 1, 2, 0, 0,
              0, 1, 0, 1, 0,
              0, 0, 0, 0, 0), 5, 5, byrow = TRUE)

isolines(1:ncol(m), 1:nrow(m), m, 0.5)
#> $`0.5`
#> $`0.5`$x
#>  [1] 4.00 3.50 3.00 2.50 2.00 1.50 1.50 1.50 2.00 3.00 4.00 4.50 4.00 3.75 4.00
#> [16] 4.50 4.00
#> 
#> $`0.5`$y
#>  [1] 4.50 4.00 3.75 4.00 4.50 4.00 3.00 2.00 1.50 1.25 1.50 2.00 2.50 3.00 3.50
#> [16] 4.00 4.50
#> 
#> $`0.5`$id
#>  [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#> 
#> 
#> attr(,"class")
#> [1] "isolines" "iso"

isobands(1:ncol(m), 1:nrow(m), m, 0.5, 1.5)
#> $`0.5:1.5`
#> $`0.5:1.5`$x
#>  [1] 2.50 2.00 1.50 1.50 1.50 2.00 3.00 4.00 4.50 4.00 3.75 4.00 4.50 4.00 3.50
#> [16] 3.00 3.00 3.25 3.50 3.00 2.50 2.50
#> 
#> $`0.5:1.5`$y
#>  [1] 4.00 4.50 4.00 3.00 2.00 1.50 1.25 1.50 2.00 2.50 3.00 3.50 4.00 4.50 4.00
#> [16] 3.75 3.25 3.00 2.00 1.75 2.00 3.00
#> 
#> $`0.5:1.5`$id
#>  [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2
#> 
#> 
#> attr(,"class")
#> [1] "isobands" "iso"

The function plot_iso() is a convenience function for debugging and testing.

plot_iso(m, 0.5, 1.5)

The isolining and isobanding algorithms have no problem with larger datasets. Let’s calculate isolines and isobands for the volcano dataset, convert to sf, and plot with ggplot2.

library(ggplot2)
suppressWarnings(library(sf))
#> Linking to GEOS 3.10.2, GDAL 3.4.2, PROJ 8.2.1; sf_use_s2() is TRUE

m <- volcano
b <- isobands((1:ncol(m))/(ncol(m)+1), (nrow(m):1)/(nrow(m)+1), m, 10*(9:19), 10*(10:20))
l <- isolines((1:ncol(m))/(ncol(m)+1), (nrow(m):1)/(nrow(m)+1), m, 10*(10:19))

bands <- iso_to_sfg(b)
data_bands <- st_sf(
  level = 1:length(bands),
  geometry = st_sfc(bands)
)
lines <- iso_to_sfg(l)
data_lines <- st_sf(
  level = 2:(length(lines)+1),
  geometry = st_sfc(lines)
)

ggplot() +
  geom_sf(data = data_bands, aes(fill = level), color = NA, alpha = 0.7) +
  geom_sf(data = data_lines, color = "black") +
  scale_fill_viridis_c(guide = "none") +
  coord_sf(expand = FALSE)

More Repositories

1

devtools

Tools to make an R developer's life easier
R
2,392
star
2

lintr

Static Code Analysis for R
R
1,193
star
3

httr

httr: a friendly http package for R
R
984
star
4

actions

GitHub Actions for the R community
TypeScript
948
star
5

testthat

An R πŸ“¦ to make testing πŸ˜€
R
875
star
6

usethis

Set up commonly used πŸ“¦ components
R
842
star
7

pkgdown

Generate static html documentation for an R package
R
716
star
8

styler

Non-invasive pretty printing of R code
R
706
star
9

pak

A fresh approach to package installation
C
652
star
10

cli

Tools for making beautiful & useful command line interfaces
R
635
star
11

rig

The R Installation Manager
Rust
609
star
12

roxygen2

Generate R package documentation from inline R comments
R
590
star
13

rlang

Low-level API for programming with R
R
498
star
14

progress

Progress bar in your R terminal
R
463
star
15

here

A simpler way to find your files
R
410
star
16

R6

Encapsulated object-oriented programming for R
R
405
star
17

scales

Tools for ggplot2 scales
R
392
star
18

fs

Provide cross platform file operations based on libuv.
C
362
star
19

rex

Friendly regular expressions for R.
R
331
star
20

covr

Test coverage reports for R
R
331
star
21

crayon

πŸ–οΈ R package for colored terminal output β€” now superseded by cli
R
325
star
22

remotes

Install R packages from GitHub, GitLab, Bitbucket, git, svn repositories, URLs
R
325
star
23

memoise

Easy memoisation for R
R
315
star
24

lobstr

Understanding complex R objects with tools similar to str()
R
301
star
25

profvis

Visualize R profiling data
JavaScript
297
star
26

callr

Call R from R
R
295
star
27

slider

Sliding Window Functions
R
295
star
28

vctrs

Generic programming with typed R vectors
C
284
star
29

waldo

Find differences between R objects
R
275
star
30

zeallot

Variable assignment with zeal! (or multiple, unpacking, and destructuring assignment in R)
R
253
star
31

conflicted

An alternative conflict resolution strategy for R
R
244
star
32

bench

High Precision Timing of R Expressions
R
241
star
33

httr2

Make HTTP requests and process their responses. A modern reimagining of httr.
R
232
star
34

gmailr

Access the Gmail RESTful API from R.
R
229
star
35

processx

Execute and Control Subprocesses from R
R
229
star
36

asciicast

Turn R scripts into terminal screencasts
R
224
star
37

xml2

Bindings to libxml2
R
218
star
38

gh

Minimalistic GitHub API client in R
R
218
star
39

cpp11

cpp11 helps you to interact with R objects using C++ code.
C++
199
star
40

keyring

πŸ” Access the system credential store from R
R
191
star
41

vdiffr

Visual regression testing and graphical diffing with testthat
C++
182
star
42

svglite

A lightweight svg graphics device for R
C++
181
star
43

pillar

Format columns with colour
R
179
star
44

withr

Methods For Temporarily Modifying Global State
R
173
star
45

ragg

Graphic Devices Based on AGG
C++
172
star
46

hugodown

Make websites with hugo and RMarkdown
R
166
star
47

ymlthis

write YAML for R Markdown, bookdown, blogdown, and more
R
163
star
48

coro

Coroutines for R
R
153
star
49

rprojroot

Finding files in project subdirectories
R
148
star
50

debugme

Easy and efficient debugging for R packages
R
146
star
51

available

Check if a package name is available to use
R
142
star
52

gert

Simple git client for R
C
142
star
53

archive

R bindings to libarchive, supporting a large variety of archive formats
C++
142
star
54

ellipsis

Tools for Working with ...
R
141
star
55

later

Schedule an R function or formula to run after a specified period of time.
C++
137
star
56

itdepends

R
133
star
57

fastmap

Fast map implementation for R
C++
132
star
58

prettyunits

Pretty, human readable formatting of quantities
JavaScript
131
star
59

rray

Simple Arrays
R
130
star
60

tidyselect

A backend for functions taking tidyverse selections
R
123
star
61

desc

Manipulate DESCRIPTION files
R
121
star
62

evaluate

A version of eval for R that returns more information about what happened
R
118
star
63

gargle

Infrastructure for calling Google APIs from R, including auth
R
114
star
64

rcmdcheck

Run R CMD check from R and collect the results
R
113
star
65

tree-sitter-r

R
106
star
66

prettycode

Syntax highlight R code in the terminal
R
101
star
67

sloop

S language OOP ⛡️
R
101
star
68

clock

A Date-Time Library for R
R
100
star
69

mockery

A mocking library for R.
R
99
star
70

revdepcheck

R package reverse dependency checking
R
99
star
71

pkgdepends

R Package Dependency Resolution
R
94
star
72

lifecycle

Manage the life cycle of your exported functions and arguments
R
92
star
73

systemfonts

System Native Font Handling in R
C++
91
star
74

commonmark

High Performance CommonMark and Github Markdown Rendering in R
C
88
star
75

downlit

Syntax Highlighting and Automatic Linking
R
86
star
76

gtable

The layout packages that powers ggplot2
R
86
star
77

askpass

Password Entry for R, Git, and SSH
R
84
star
78

zip

Platform independent zip compression via miniz
C
83
star
79

rappdirs

Find OS-specific directories to store data, caches, and logs. A port of python's AppDirs
R
82
star
80

clisymbols

Unicode symbols for CLI applications, with fallbacks
R
79
star
81

marquee

Markdown Parser and Renderer for R Graphics
C
77
star
82

ps

R package to query, list, manipulate system processes
C
73
star
83

credentials

Tools for Managing SSH and Git Credentials
R
72
star
84

sessioninfo

Print Session Information
R
72
star
85

pkgapi

Create a map of functions for an R package - WORK IN PROGRESS!
R
70
star
86

sodium

R bindings to libsodium
R
69
star
87

roxygen2md

Convert elements of roxygen documentation to markdown
R
67
star
88

backports

Reimplementations of Functions Introduced Since R-3.0.0
R
66
star
89

pkgbuild

Find tools needed to build R packages
R
65
star
90

webfakes

Fake web apps for HTTP testing R packages
C
63
star
91

generics

Common generic methods
R
61
star
92

cliapp

Rich Command Line Applications
R
61
star
93

diffviewer

HTML widget to visually compare files
JavaScript
58
star
94

pkgload

Simulate installing and loading a package
R
58
star
95

cachem

Key-value caches for R
R
57
star
96

liteq

Serverless R message queue using SQLite
R
56
star
97

brio

Basic R Input Output
R
53
star
98

carrier

Create standalone functions for remote execution
R
50
star
99

jose

Javascript Object Signing and Encryption for R
R
48
star
100

Rapp

Build CLI applications in R
R
46
star