| Title: | Scatter Pie Plot | 
| Version: | 0.2.6 | 
| Description: | Creates scatterpie plots, especially useful for plotting pies on a map. | 
| Depends: | R (≥ 4.1.0), ggplot2 | 
| Imports: | ggforce, rlang, ggfun, stats, tidyr, dplyr, utils, yulab.utils (≥ 0.1.6) | 
| Suggests: | knitr, rmarkdown, prettydoc, maps, scales, cli | 
| VignetteBuilder: | knitr | 
| License: | Artistic-2.0 | 
| Encoding: | UTF-8 | 
| RoxygenNote: | 7.3.3 | 
| NeedsCompilation: | no | 
| Packaged: | 2025-09-12 15:56:25 UTC; HUAWEI | 
| Author: | Guangchuang Yu | 
| Maintainer: | Guangchuang Yu <guangchuangyu@gmail.com> | 
| Repository: | CRAN | 
| Date/Publication: | 2025-09-12 16:20:02 UTC | 
scatterpie: Scatter Pie Plot
Description
Creates scatterpie plots, especially useful for plotting pies on a map.
Author(s)
Maintainer: Guangchuang Yu guangchuangyu@gmail.com (ORCID)
Other contributors:
- Shuangbin Xu xshuangbin@163.com (ORCID) [contributor] 
geom_scatterpie
Description
scatter pie plot
Usage
geom_scatterpie(
  mapping = NULL,
  data = NULL,
  cols,
  pie_scale = 1,
  sorted_by_radius = FALSE,
  legend_name = "type",
  long_format = FALSE,
  label_radius = NULL,
  label_show_ratio = TRUE,
  label_threshold = 0,
  donut_radius = NULL,
  bg_circle_radius = NULL,
  ...
)
geom_scatterpie2(
  mapping = NULL,
  data,
  cols,
  pie_scale = 1,
  sorted_by_radius = FALSE,
  legend_name = "type",
  long_format = FALSE,
  label_radius = NULL,
  label_show_ratio = TRUE,
  label_threshold = 0,
  donut_radius = NULL,
  bg_circle_radius = NULL,
  ...
)
Arguments
| mapping | aes mapping | 
| data | data | 
| cols | cols the pie data | 
| pie_scale | amount to scale the pie size if there is no radius mapping exists | 
| sorted_by_radius | whether plotting large pie first | 
| legend_name | name of fill legend | 
| long_format | logical whether use long format of input data | 
| label_radius | numeric the radius of label position (relative the radius of pie), default is NULL, when it is provided, the ratio or value label will be displayed. | 
| label_show_ratio | logical only work when  | 
| label_threshold | numeric the threshold is to control display the label, the ratio of slice pie smaller than the threshold will not be displayed. default is 0. | 
| donut_radius | numeric the radius of donut chart (relative the radius of circle), default is NULL. it should be between 0 and 1, if it is provided, the donut chart will be displayed instead of pie chart. | 
| bg_circle_radius | numeric the radius of background circle, default is FALSE, we suggest setting it to between 1 and 1.5 . | 
| ... | additional parameters | 
Value
layer
Author(s)
Guangchuang Yu
Examples
library(ggplot2)
d <- data.frame(x=rnorm(5), y=rnorm(5))
d$A <- abs(rnorm(5, sd=1))
d$B <- abs(rnorm(5, sd=2))
d$C <- abs(rnorm(5, sd=3))
ggplot() + 
geom_scatterpie(
  aes(x=x, y=y), data=d, cols=c("A", "B", "C")
) + 
coord_fixed()
ggplot() + 
geom_scatterpie(
  aes(x=x, y=y), data = d, cols=c("A", "B", "C"), 
  label_radius=1.05
) + 
coord_fixed()
d <- tidyr::gather(d, key="letters", value="value", -x:-y)
ggplot() + geom_scatterpie(aes(x=x, y=y), data=d, cols="letters", long_format=TRUE) + coord_fixed()
p1 <- ggplot() + 
      geom_scatterpie(
        mapping = aes(x=x, y=y), data=d, cols="letters", 
        long_format=TRUE, 
        donut_radius=.5
      ) + 
      coord_fixed()
p1
p2 <- ggplot() + 
      geom_scatterpie(
        mapping = aes(x=x, y=y), data=d, cols="letters", 
        long_format=TRUE, 
        donut_radius = .5, 
        bg_circle_radius = 1.2
      ) + 
      coord_fixed()
p2
d |> dplyr::select(c(x, y)) |> dplyr::distinct() |> dplyr::mutate(Cell=c('A','A','B','C','B')) -> d2
d |> dplyr::left_join(d2) -> d3
d3$r_size <- c(2, 3, 4, 5, 6) * .01
head(d3)
p3 <- ggplot() +
     geom_scatterpie(data = d3, mapping = aes(x=x, y=y, r = r_size, color=Cell), cols="letters",
                     long_format=TRUE, donut_radius=.5, color = NA, linewidth=2,
                      bg_circle_radius=1.2) + coord_fixed()
p3
p4 <- ggplot() +
      geom_scatterpie(data = d3,
                      mapping = aes(x, y = y, r = r_size),
                      cols = 'letters',
                      long_format = TRUE,
                      label_radius = 1.1,
                      label_show_ratio = FALSE,
                      label_threshold = 0.06,
                      fontsize = 3
      ) +
      coord_fixed()
p4
geom_scatterpie_legend
Description
legend of scatterpie
Usage
geom_scatterpie_legend(
  radius,
  x,
  y,
  n = 5,
  breaks = NULL,
  labeller,
  label_position = "right",
  ...
)
Arguments
| radius | radius vector | 
| x | x position | 
| y | y position | 
| n | number of circle | 
| breaks | A character vector of breaks, default is NULL. | 
| labeller | function to label radius | 
| label_position | a character string indicating the position of labels, "right" (default) or "left" or any abbreviation of these | 
| ... | other text arguments passed on to  | 
Value
layer
Author(s)
Guangchuang Yu
recenter
Description
re-center map data
Usage
recenter(mapdata, center, longitude_column = "long")
Arguments
| mapdata | map data, shoud be a data.frame | 
| center | center | 
| longitude_column | longitude column | 
Value
updated map data
Author(s)
ygc