I am struggling with getting the pie chart labels correct. Looked around and thought that I could easily implement what mathematicalCoffee did. So far I have this code:
We can make it work with ggplot2
and the ggrepel
package.
Unfortunately geom_text_repel()
does not support a position =
argument, so we have to calculate the starting position of the line by hand.
With your data.frame
:
alloc$pos = (cumsum(c(0, alloc$wght)) + c(alloc$wght / 2, .01))[1:nrow(alloc)]
This calculates the mean point for each group (or obs, or whtvr you want to call it).
Plugging it in in the geom_text_repel
's y
aes
gives a nice result:
library(ggplot2)
library(ggrepel)
ggplot(alloc, aes(1, wght, fill = ltr)) +
geom_col(color = 'black',
position = position_stack(reverse = TRUE),
show.legend = FALSE) +
geom_text_repel(aes(x = 1.4, y = pos, label = ltr),
nudge_x = .3,
segment.size = .7,
show.legend = FALSE) +
coord_polar('y') +
theme_void()
I made some choices, as the use of text
instead of label
, the removal of the legend and the axes. Feel free to change them