2017-10-04 8 views
0

Je dessinais un data.frame dans R dans un graphique à secteurs. Voici le codeDessin graphique Pie3D dans R

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

Le data.frame que je suis en train de tracer ici a 38 valeurs, je veux laisser à ces valeurs qui ne contribuent pas de façon significative à la piepercent dans une grande région disent moins de 2% . Y a-t-il un moyen de le faire?

Voici comment le graphique ressemble à:

Pie-Chart

+3

Oui, vous pouvez regrouper les catégories en utilisant un seuil minimum. Il y a probablement déjà des réponses à ce sujet. Mais plus important encore, êtes-vous sûr que c'est le genre de graphique que vous voulez? Les tartes 3d (et les tartes en général) sont largement déconseillées en raison d'une mauvaise interprétation visuelle des données. Un diagramme à barres conviendrait-il mieux? – dww

+0

Merci de m'avoir fait connaître les meilleures pratiques! Va utiliser des graphiques à barres dans mon résultat! – Rawshn

Répondre

1

globale les moins de seuil dans une catégorie, puis terrain:

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