2017-10-04 9 views
0

私は、R内のdata.frameを円グラフでプロットしていました。ここで私はここにプロットしようとしていますdata.frameは38個の値を持つコードR内のPie3Dグラフの描画

library(plotrix) 
piepercent<- round(100*cause_wise$suicides/sum(cause_wise$suicides), 1) 
png(file = "plots/cause suicide.png") 
pie3D(cause_wise$suicides,labels = piepercent,explode = 0.1, 
    main = "Suicide by Gender(in percentages)") 
#legend("topright", cause, cex = 0.8, fill = rainbow(length(cause))) 
dev.off() 

があり、私は一つの大きな領域にpiepercentに大きく寄与していないこれらの値を除外したい2%未満を言います。私はこれを行う方法がありますか?グラフがどのように見えるかここで

がある:1つのカテゴリに閾値以上のもの少ない

Pie-Chart

+3

はいあなたはカテゴリを集約することができます最小しきい値を使用します。おそらくすでにそれに関する回答があります。しかしもっと重要なのは、これがあなたが望むグラフの種類だと確信していますか? 3dパイ(および一般的にはパイ)は、データの視覚的な解釈が悪いために広く推奨されていない。棒グラフの方が良いでしょうか? – dww

+0

ベストプラクティスについてお知らせしていただきありがとうございます。私の結果に棒グラフを使用します! – Rawshn

答えて

1

集計し、グラフ:

library(plotrix) 
library(dplyr) 

# dummy data 
cause_wise <- data.frame(suicides = c(2, 3, 1, 50, 1, 50, 45)) 

# sum values where percentage is less than 2% 
plotDat <- cause_wise %>% 
    mutate(grp = ifelse(suicides/sum(suicides) < 0.02, "tooSmall", row_number())) %>% 
    group_by(grp) %>% 
    summarise(suicides = sum(suicides)) %>% 
    select(-grp) %>% 
    ungroup() 

# set label and color(grey for <2%) 
piepercent <- round(100 * plotDat$suicides/sum(plotDat$suicides), 1) 
piecol <- c(rainbow(length(piepercent) - 1), "grey") 

# why oh why 3D pie chart... 
pie3D(plotDat$suicides, 
     labels = piepercent, 
     explode = 0.1, 
     col = piecol, 
     main = "Suicide by Gender (in percentages)") 

enter image description here