在 ggplot2 / coord_polar 中显示具有不同半径和角度的饼图切片

Showing pie slices with different radii and angles in ggplot2 / coord_polar

我正在尝试使用 ggplot2 polar_coord 显示两个变量,一个变量将反映在饼图切片的宽度(即地壳的长度)中,第二个变量将反映在半径中(即切片的非地壳边的长度),这可能吗?

在下面的示例中,我希望 cat1 是饼图圆周的 4/20 (4+6+10),半径为 1,cat2 是圆周的 6/20,半径为4,cat3 为半径为 5 的圆周的 10/20。

df <- data.frame(
  x = c("cat1", "cat2", "cat3"),
  y = c(4, 6, 10),
  z = c(1, 4, 5))

我得到的最接近的是相对于彼此大小正确的切片(下面的代码),但我希望切片填满整个饼图并且不受最大馅饼总周长的四分之一。

cxc <- ggplot(df, aes(x = x,
                      y = z,
                      width = y)) + 
  geom_bar(aes(fill=x), stat="identity", color = "black")
cxc + coord_polar()

这是你想要的吗?

library(dplyr)

df %>%
  mutate(xmin = cumsum(lag(y, default = 0)),
         xmax = cumsum(y)) %>%
  ggplot(aes(xmin = xmin, xmax = xmax,
             ymin = 0, ymax = z,
             fill = x)) +
  geom_rect(colour = "black") +
  coord_polar()