The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

dragmapr Spatial Studio

dragmapr

dragmapr hex logo

R-CMD-check

dragmapr lets you drag map regions into any layout you want, then save that layout as a reproducible image. Open a draggable map in your browser, move regions and labels around until things look right, download two small CSV files, and turn them into a publication-ready ggplot2 map.

Watch a short walkthrough in the dragmap demo vignette, or see the HHS placeholder shapes demo for a complete Spatial Studio workflow.

Install

# install.packages("pak")
pak::pak("PrigasG/dragmapr")

Quick Start

library(dragmapr)

# Step 1: open the interactive map in your browser and drag things around
drag_map_prototype(my_sf, region_col = "region", open = TRUE)

# Step 2: after downloading the offset CSVs, render a static image
render_dragged_map(
  my_sf,
  region_col    = "region",
  region_offsets = "drag_region_offsets.csv",
  label_offsets  = "drag_label_offsets.csv",
  file = "my-map.png"
)

If your data is in longitude/latitude, run prepare_dragmapr_sf() first:

my_sf <- prepare_dragmapr_sf(my_sf)

How It Works

  1. Start with a polygon sf object and pick a column that groups your regions.
  2. Call drag_map_prototype() to open a browser page — drag regions and labels wherever you like.
  3. Click Copy or Download in the side panel to save the offset CSVs.
  4. Call render_dragged_map() with those CSVs to get a static ggplot2 image anytime, without re-running a browser session.

If you used Spatial Studio, you can skip steps 3–4 and call render_dragmapr_project() with the project ZIP instead:

render_dragmapr_project(
  "dragmapr-project.zip",
  file = "final-map.png",
  width = 10, height = 8, dpi = 300
)

Labels and Connectors

Labels are optional. You can show one label per region, supply your own label table, or turn labels off entirely.

# One label per region (default)
drag_map_prototype(my_sf, "region")

# Text-only labels, no marker
drag_map_prototype(my_sf, "region", label_marker = FALSE)

# Circle markers instead of rectangles
drag_map_prototype(my_sf, "region", label_marker_shape = "circle")

For longer notes or callout boxes, use as_drag_annotations():

notes <- as_drag_annotations(data.frame(
  label_id = "north-note",
  region   = "North",
  label    = "A note about this region",
  x = 50000, y = 150000
), connector = TRUE, connector_type = "curve")

render_dragged_map(my_sf, "region",
  region_offsets = "drag_region_offsets.csv",
  labels         = notes,
  label_offsets  = "drag_label_offsets.csv",
  connector_endpoint = "arrow",
  file = "annotated-map.png"
)

Connector styles: "straight", "elbow", "curve", "squiggle". Endpoints: "none" or "arrow".

RStudio Addin

After installing, go to Addins > Launch dragmapr in RStudio. Pick your sf object, choose columns and styling, drag the layout, then click Done. The addin saves region_offsets and label_offsets to .GlobalEnv so you can pass them straight to render_dragged_map().

# Load your sf object first, then launch the addin
regions <- prepare_dragmapr_sf(sf::st_read("regions.shp", quiet = TRUE))
dragmapr_addin()

render_dragged_map(regions, region_col = "name",
  region_offsets = region_offsets,
  label_offsets  = label_offsets,
  file = "map.png"
)

Built-in Examples

Run any example to see the package in action without needing your own data:

# Run all examples in a temp folder
source(system.file("examples", "smoke_examples.R", package = "dragmapr"))

Need an export format not available in Spatial Studio? Download the GeoJSON or GeoPackage and open it in Mapshaper to convert.

Vignettes

Known Limitations

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.