{"id":13401296,"url":"https://github.com/mitchelloharawild/ggquiver","last_synced_at":"2026-03-11T04:31:03.533Z","repository":{"id":56934338,"uuid":"99797215","full_name":"mitchelloharawild/ggquiver","owner":"mitchelloharawild","description":"R package for quiver plots in 'ggplot2'","archived":false,"fork":false,"pushed_at":"2026-01-28T05:57:29.000Z","size":8951,"stargazers_count":52,"open_issues_count":2,"forks_count":3,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-01-28T21:31:58.183Z","etag":null,"topics":["ggplot2","plot","quiver","r","velocity"],"latest_commit_sha":null,"homepage":"http://pkg.mitchelloharawild.com/ggquiver","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mitchelloharawild.png","metadata":{"files":{"readme":"README.Rmd","changelog":"NEWS.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-08-09T10:41:30.000Z","updated_at":"2026-01-28T05:55:52.000Z","dependencies_parsed_at":"2023-11-26T13:26:32.452Z","dependency_job_id":null,"html_url":"https://github.com/mitchelloharawild/ggquiver","commit_stats":{"total_commits":72,"total_committers":1,"mean_commits":72.0,"dds":0.0,"last_synced_commit":"6012b58fe53fdd15bea6f2df96396050a792d634"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/mitchelloharawild/ggquiver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitchelloharawild%2Fggquiver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitchelloharawild%2Fggquiver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitchelloharawild%2Fggquiver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitchelloharawild%2Fggquiver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mitchelloharawild","download_url":"https://codeload.github.com/mitchelloharawild/ggquiver/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitchelloharawild%2Fggquiver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30370797,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T21:41:54.280Z","status":"online","status_checked_at":"2026-03-11T02:00:07.027Z","response_time":84,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ggplot2","plot","quiver","r","velocity"],"created_at":"2024-07-30T19:01:01.108Z","updated_at":"2026-03-11T04:31:03.524Z","avatar_url":"https://github.com/mitchelloharawild.png","language":"R","funding_links":[],"categories":["R"],"sub_categories":[],"readme":"---\noutput: github_document\n---\n\n\u003c!-- README.md is generated from README.Rmd. Please edit that file --\u003e\n\n```{r, echo = FALSE, message=FALSE}\nknitr::opts_chunk$set(\n  collapse = TRUE,\n  fig.path = \"man/figures/README-\",\n  comment = \"#\u003e\"\n)\nlibrary(ggquiver)\n```\n\n\u003c!-- badges: start --\u003e\n[![R-CMD-check](https://github.com/mitchelloharawild/ggquiver/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/mitchelloharawild/ggquiver/actions/workflows/R-CMD-check.yaml)\n[![CRAN_Status_Badge](https://www.r-pkg.org/badges/version/ggquiver)](https://cran.r-project.org/package=ggquiver)\n[![Downloads](https://cranlogs.r-pkg.org/badges/ggquiver?color=brightgreen)](https://cran.r-project.org/package=ggquiver)\n\u003c!-- badges: end --\u003e\n\n# ggquiver \u003ca href=\"https://pkg.mitchelloharawild.com/ggquiver/\"\u003e\u003cimg src=\"man/figures/logo.svg\" align=\"right\" height=\"139\" alt=\"ggquiver website\" /\u003e\u003c/a\u003e\n\nQuiver plots for ggplot2. An extension of 'ggplot2' to provide quiver plots to \nvisualise vector fields. This functionality is implemented using a geom to \nproduce a new graphical layer, which allows aesthetic options. This layer can \nbe overlaid on a map to improve visualisation of mapped data.\n\n## Installation\n\nThe **stable** version can be installed from CRAN:\n\n```{r, eval = FALSE}\ninstall.packages(\"ggquiver\")\n```\n\nThe **development** version can be installed from GitHub using:\n\n```{r, eval = FALSE}\n# install.packages(\"remotes\")\nremotes::install_github(\"mitchelloharawild/ggquiver\")\n```\n\n## Usage\n\n*ggquiver* introduces a new geom `geom_quiver()`, which produces a quiver plot in *ggplot2*.\n\nQuiver plots for functions can easily be produced using ggplot aeshetics. When a grid is detected, the size of the vectors are automatically adjusted to fit within the grid.\n\n```{r quiverplot}\nlibrary(ggplot2)\nlibrary(ggquiver)\nexpand.grid(x=seq(0,pi,pi/12), y=seq(0,pi,pi/12)) |\u003e \n  ggplot(aes(x=x,y=y,u=cos(x),v=sin(y))) +\n  geom_quiver()\n```\n\nThe *ggplot2* example for seal movements is easily reproduced, with appropriately scaled arrowhead sizes. Here, the vecsize is set to zero to not resize the vectors.\n\n```{r sealplot}\nlibrary(maps)\nworld \u003c- sf::st_as_sf(map('world', plot = FALSE, fill = TRUE))\n\nggplot(seals) + \n  geom_quiver(\n    aes(x=long, y=lat, u=delta_long, v=delta_lat),\n    vecsize=0\n  ) + \n  geom_sf(data = world) +\n  coord_sf(xlim = c(-173.8, -117.8), ylim = c(28.7, 50.7), expand = FALSE) + \n  labs(title = \"Seal movements\", x = NULL, y = NULL)\n\n```\n\nQuiver plot arrows can be centered about x and y coordinates, which is useful when working with maps and scaled vectors.\n\n```{r sealplot-centered}\nggplot(seals) + \n  geom_quiver(\n    aes(x=long, y=lat, u=delta_long, v=delta_lat),\n    vecsize=0, center = TRUE\n  ) + \n  geom_sf(data = world) +\n  coord_sf(xlim = c(-173.8, -117.8), ylim = c(28.7, 50.7), expand = FALSE) + \n  labs(title = \"Seal movements (centered arrows)\", x = NULL, y = NULL)\n```\n\nThe arrows can be customised using the `arrow` parameter from `grid::arrow()`. For example, to use closed arrowheads:\n\n```{r sealplot-custom}\nggplot(seals) + \n  geom_quiver(\n    aes(x=long, y=lat, u=delta_long, v=delta_lat),\n    vecsize=0, center = TRUE,\n    arrow = arrow(type = \"closed\")\n  ) + \n  geom_sf(data = world) +\n  coord_sf(xlim = c(-173.8, -117.8), ylim = c(28.7, 50.7), expand = FALSE) + \n  labs(title = \"Seal movements (closed arrows)\", x = NULL, y = NULL)\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmitchelloharawild%2Fggquiver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmitchelloharawild%2Fggquiver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmitchelloharawild%2Fggquiver/lists"}