Title: | Scatter Pie Plot |
Version: | 0.2.5 |
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.2 |
NeedsCompilation: | no |
Packaged: | 2025-06-21 08:53:07 UTC; HUAWEI |
Author: | Guangchuang Yu |
Maintainer: | Guangchuang Yu <guangchuangyu@gmail.com> |
Repository: | CRAN |
Date/Publication: | 2025-06-21 09: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