查看原文
其他

Y叔 2018-06-07

目前我的星球开通了分享有奖,赏金是入圈费的22%,分分钟可以赚回入圈费的

这是CJ在我的星球里分享的一个关于饼图的实现方式,代码的排版太差,还有一点是对于普通用户来说,还是有点难度,如果是我,必须是写成函数,直接出图。

pieplot <- function(x, y, width=1) {
 yy <- cumsum(y)
 d= data.frame(ymin=yy-y + (1-width)/2,
     ymax=yy - (1-width)/2,
     group=x)
 ggplot(d) +
     geom_rect(aes(xmin=0, xmax=1, ymin=ymin, ymax=ymax, fill=group)) +
     coord_polar(theta='y') + theme_void() + ylim(0, NA)
}

那么上面这个函数,默认就是一般的饼图,如果要分开,那么就是设置width参数,如果想要中间空的,通过加xlim,正如我在《中空的环形树》一文中所介绍的。

x <- letters[1:5]
y <- 1:5
pieplot(x, y)
pieplot(x, y, width=.8)
pieplot(x, y, width=.5)
pieplot(x, y) + xlim(-1, NA)
pieplot(x, y) + xlim(-.5, NA)
pieplot(x, y, width=.5) + xlim(-.5, NA)

于是这6条指令,画出下面6个图:

然而正如CJ提到的,一旦中间空了,每一部分就不是扇形,底部不尖了,这当然是有解决方案的,请移步《邪恶的我画出了善良的饼图》。

library(ggforce)
d = data.frame(x=letters[1:5], y=1:5)
ggplot(d) +
 geom_arc_bar(aes(x0=0, y0=0, r0=0, r=1,
                 amount=y, fill=x, explode=.1),
   stat='pie') +
 coord_equal()

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存