Skip to content

davidchall/ggip

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
R
 
 
man
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

ggip

Lifecycle: experimental CRAN status R build status Coverage status

ggip is a {ggplot2} extension for visualizing IP addresses and networks stored in {ipaddress} vectors.

Here are some of the key features:

  • IP data mapped to 2D plane by a unified coordinate system
  • Compatible with existing ggplot2 layers
  • Custom IP-specific layers for common use cases
  • Full support for both IPv4 and IPv6 address spaces

Installation

You can install the released version of ggip from CRAN with:

install.packages("ggip")

Or you can install the development version from GitHub:

# install.packages("remotes")
remotes::install_github("davidchall/ggip")

Usage

Plotting with {ggip} follows most of the conventions set by {ggplot2}. A major difference is that coord_ip() is required to map IP data to the 2D grid (addresses to points and networks to rectangles). Learn more in vignette("ggip").

Here’s a quick showcase of what’s possible:

library(tidyverse)
library(ggfittext)
library(ggip)

ggplot(ip_data) +
  stat_summary_address(aes(ip = address)) +
  geom_hilbert_outline(color = "grey80") +
  geom_fit_text(
    aes(
      xmin = network$xmin, xmax = network$xmax,
      ymin = network$ymin, ymax = network$ymax,
      label = label
    ),
    data = iana_ipv4 %>% filter(allocation == "Reserved"),
    color = "#fdc086", grow = TRUE
  ) +
  scale_fill_viridis_c(name = NULL, trans = "log2", na.value = "black") +
  coord_ip(pixel_prefix = 20) +
  theme_ip_dark()
#> Warning: Transformation introduced infinite values in discrete y-axis