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

问题描述

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

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

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()

plot

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...