PieGlyph
is an R package aimed at replacing points in a
plot with pie-chart glyphs, showing the relative proportions of
different categories. The pie-chart glyphs are invariant to the axes and
plot dimensions to prevent distortions when the plot dimensions are
changed.
set.seed(123)
plot_data <- data.frame(response = rnorm(30, 100, 30),
system = 1:30,
group = sample(size = 30, x = c('G1', 'G2', 'G3'), replace = T),
A = round(runif(30, 3, 9), 2),
B = round(runif(30, 1, 5), 2),
C = round(runif(30, 3, 7), 2),
D = round(runif(30, 1, 9), 2))
The data has 30 observations and seven columns. response
is a continuous variable measuring system output while
system
describes the 30 individual systems of interest.
Each system is placed in one of three groups shown in
group
. Columns A
, B
,
C
, and D
measure system attributes.
We can plot the outputs for each system as a scatterplot and replace the points with pie-chart glyphs showing the relative proportions of the four system attributes
The attributes can also be stacked into one column to generate the plot.
This variant of the function is useful for situations when the data is
in tidy format. See vignette('tidy-data')
and
vignette('pivot')
for more information.
plot_data_stacked <- plot_data %>%
pivot_longer(cols = c('A','B','C','D'),
names_to = 'Attributes',
values_to = 'values')
head(plot_data_stacked, 8)
#> # A tibble: 8 × 5
#> response system group Attributes values
#> <dbl> <int> <chr> <chr> <dbl>
#> 1 83.2 1 G1 A 5.8
#> 2 83.2 1 G1 B 1.57
#> 3 83.2 1 G1 C 4.78
#> 4 83.2 1 G1 D 8.31
#> 5 93.1 2 G3 A 6.07
#> 6 93.1 2 G3 B 3.76
#> 7 93.1 2 G3 C 3.87
#> 8 93.1 2 G3 D 8.21
It is also possible to create interactive pie-chart scatterplots
using the geom_pie_interactive
function via the ggiraph framework.
Hovering over a pie-chart glyph will show a tooltip containing
information about the raw counts and percentages of the categories
(system attributes in this example) shown in the pie-charts. All
additional features by ggiraph are also supported. See the ggiraph book and
vignette("interactive-pie-glyphs")
for more
information.