| 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