ggplot2使用facet_grid为每一行生成饼图

时间:2013-10-03 12:44:59

标签: r charts ggplot2 shiny shiny-server

我正在尝试为此data.frame生成饼图,其中每一行代表一个站点的唯一标识符,字段的错误计数和字段数。如何最好地构建ggplot命令以生成饼图,其中错误只是每个站点字段的一小部分? 目前,我的代码如下所示:

ggplot(error_indicator,aes(x = Fields,y=Errors)) 
+ facet_grid(~Hospital) 
+ geom_bar(width = 1,stat="identity", position="fill") 
+ coord_polar(theta="y")

数据框如下所示:

enter image description here

但是我的ggplot代码的结果如下所示:

enter image description here

如何将饼图显示为每个医院和每个医院使用自己的行的字段比例?

1 个答案:

答案 0 :(得分:1)

首先,饼图不是显示数据的最佳方式!

但无论如何这里是一个解决方案。这里最重要的部分是scale_y_continuous(),可以将限制从0设置为1,然后使用库percent_format()中的scales将其转换为百分比。

library(ggplot2)
library(scales)
ggplot(df,aes(x=1,y=Errors/Fields))+geom_bar(stat="identity")+
  facet_grid(~Hospital)+
  coord_polar(theta="y")+
  scale_y_continuous(labels = percent_format(),limits=c(0,1),
              breaks=c(0.25,0.5,0.75,1))+
  theme(axis.title.y=element_blank(),
        axis.text.y=element_blank(),
        axis.ticks.y=element_blank())