R对饼图

时间:2015-05-25 04:37:12

标签: r pie-chart

我有一些关于表格形式的流程质量的统计数据(结果>>所有案例的百分比)

# (df <- read.csv(...)
detection_quality_algo1_pupil <- table(df$pupeuclid1)
detection_quality_algo1_pupil_percent = round(
        detection_quality_algo1_pupil[names(detection_quality_algo1_pupil)] 
        / nrow(df) 
        * 100
   , digits = 1)

0 - 16.4%

1 - 50.6%

2 - 12.0%

3 - 2.4%

> detection_quality_algo1_pupil_percent

    0    1    2    3    4    5   10   11   12   13   16   17   20   21   22   23   24   25   27   29   30   31   32   33 
16.4 50.6 12.0  2.4  0.5  0.6  0.9  0.6  0.3  0.1  0.3  0.1  0.1  0.1  0.1  0.3  0.3  0.1  0.1  0.3  0.1  0.3  0.1  0.1 
  37   40   43   45   50   53   54   55   56   59  102  104  106  107  112  114  131  132  134  136  138  139  141  142 
 0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.4  0.1  0.3  0.1  0.1  0.3  0.1  0.1 
 145  149  150  151  152  153  154  155  156  157  158  160  161  164  166  167  168  169  170  171  173  175  187  191 
 0.3  0.6  0.1  0.3  0.1  0.5  0.3  0.1  0.1  0.4  0.1  0.1  0.4  0.1  0.1  0.3  0.3  0.3  0.1  0.3  0.1  0.1  0.1  0.1 
 194  208 
 0.1  0.1 

> pie(detection_quality_algo1_pupil_percent)

enter image description here

我的目标是使用值&gt;对结果进行分组3成一个名为&#34;&gt;的大集团3&#34;并在饼图上显示结果。

我认为在源表上应用一些过滤器... 我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

尝试:

x <- rep(0:5,c(20,50,20,4,4,2))
pie(table(x))                                  # 3 small groups
pie(table(cut(x, c(-Inf,0:2,Inf),labels=0:3))) # 1 group representing the 3 small groups

而且,正如@sebpardo指出的那样,饼图非常糟糕。改为使用条形图:

barplot(table(cut(x, c(-Inf,0:2,Inf),labels=0:3)))

答案 1 :(得分:1)

您可以尝试使用mutate向数据框添加新的“已折叠”列,例如

library(dplyr)
df <- mutate(df, new_group = ifelse(group > 3, ">3", group)

我同意@ sebpardo在上述评论中的建议,即可以比饼图更好地显示数据。甚至帮助页面都会建议他们(见?pie):

  

“饼图是一种非常糟糕的信息显示方式。[...]”