Je voudrais pouvoir faire un "camembert" en R avec ggplot2 mais en comptant les occurrences d'apparition de certaines données.
Dans mon exemple, j'ai un Excel à partir duquel j'extrais une colonne et les valeurs qui apparaissent dans les colonnes, par exemple la colonne appelée "discipline" a les valeurs:
ggplot(df, aes(x = "", y = as.factor(df[,discipline]), fill = as.factor(df[,discipline]))) + geom_bar(width = 1, stat = "identity", color = "white") + coord_polar("y", start = 0)+ geom_text(aes(y = as.factor(df[,discipline]), label = as.factor(df[,discipline])), color = "white")+ scale_fill_manual(values =c("#0073C2FF", "#EFC000FF", "#868686FF"))+ theme_void()
Donc ce que je veux peindre est le% de fois où chacune des valeurs apparaît:
discipline1, discipline2, discipline3
en utilisant un graphique à secteurs.
Pour le graphique à barres, j'ai utilisé la valeur stat = "count"
, mais je J'ai vu ça dans le diagramme circulaire, je ne peux pas.
Par exemple, j'ai essayé quelque chose comme ceci:
discipline1, discipline2, discipline3, discipline1, discipline1, discipline2, discipline2, discipline2, discipline2, discipline2, discipline3, discipline3.
3 Réponses :
Cela répond-il à votre question?
library(tidyverse) # sample data df <- tibble(discipline = paste0("discipline", sample(1:3, 20, replace = T))) %>% count(discipline) # creating a pie chart ggplot(df, aes(x="", y= n , fill=discipline))+ geom_bar(width = 1, stat = "identity") + coord_polar("y", start=0)
Vous pouvez simplement ajouter coord_polar (theta = 'y')
après votre geom_bar
:
discipline <- c("discipline1", "discipline2", "discipline3", "discipline1", "discipline1", "discipline2", "discipline2", "discipline2", "discipline2", "discipline2", "discipline3", "discipline3")
Si vous souhaitez ajouter des libellés avec geom_text
, je suggère une approche différente au lieu de stat = 'count'
; voir ci-dessous:
library(dplyr) library(ggplot2) library(scales) data.frame(discipline) %>% group_by(discipline) %>% mutate(cnt = n(), pct = percent(cnt / nrow(.), accuracy = 1)) %>% unique %>% ungroup %>% mutate(place = cumsum(cnt) - cnt/2) %>% ggplot(data = ., aes(x = factor(1), weight = cnt, fill = factor(discipline))) + geom_bar(position = "stack") + scale_y_continuous(breaks = seq(0, length(discipline), length(discipline)/4), labels = c("0", "25%", "50%", "75%", "100%")) + coord_polar(theta='y') + geom_text(aes(x = 1.1, y = place, label = pct)) + theme(axis.text.y = element_blank(), axis.title.y = element_blank(), axis.ticks.y = element_blank(), axis.title.x = element_blank()) + labs(fill = "Discipline")
Données:
library(ggplot2) ggplot(data=as.data.frame(discipline), aes(x = factor(1),fill = factor(discipline))) + geom_bar(stat = "count") + scale_y_continuous(breaks = seq(0,12,3), labels = c("0", "25%", "50%", "75%", "100%")) + coord_polar(theta='y') + theme(axis.text.y = element_blank(), axis.title.y = element_blank(), axis.ticks.y = element_blank(), axis.title.x = element_blank()) + labs(fill = "Discipline")
Avec vos données, vous devez probablement faire ceci df%>% select (discipline)
au lieu de data.frame (discipline)
que j'ai dans ma réponse. Cependant, j'ai partagé les données que j'ai utilisées dans ma réponse pour souligner l'importance de partager un exemple reproductible. Acclamations.
Le premier commentaire ne fonctionne pas complètement pour moi
j'ai écrit:
[1] Firmware Container Management [4] Management IT Management [7] Management Firmware Firmware [10] Factory Factory Factory [13] Factory Factory Factory [16] Management Management Management [19] Electrical Electrical Electrical [22] Factory Factory Electrical [25] Container Mechanical Electrical [28] Assurance Management Management [31] Mechanical Mechanical Mechanical [34] Mechanical Mechanical Mechanical [37] Lab Electrical Electrical [40] Electrical Assurance Container [43] Electrical Assurance Management [46] Management Mechanical Mechanical [49] Factory Mechanical Mechanical [52] Mechanical Mechanical Mechanical [55] Mechanical Mechanical Mechanical [58] Mechanical Mechanical Electrical [61] Electrical Electrical Factory [64] Factory Electrical Electrical [67] Lab Electrical Electrical [70] Electrical Management Electrical [73] Assurance Firmware Firmware [76] Electrical Electrical Electrical [79] Electrical Electrical Electrical [82] Electrical Electrical Electrical [85] Electrical Electrical Electrical [88] Electrical Electrical Electrical [91] Electrical Electrical Electrical [94] Electrical Factory Factory [97] Electrical Electrical Electrical [100] Electrical Electrical Electrical [103] Electrical Electrical Electrical [106] Electrical Electrical Electrical [109] Electrical Electrical Electrical [112] Electrical Electrical Electrical [115] Electrical Electrical Factory [118] Electrical Electrical Electrical [121] Electrical Electrical Electrical [124] Electrical Management Management [127] Firmware Electrical Management [130] Firmware Electrical [133] Software Assurance [136] Assurance Assurance Firmware [139] Firmware Assurance Assurance [142] Firmware Firmware Firmware [145] Firmware Container Container [148] Firmware Firmware Firmware [151] Firmware Firmware Firmware [154] Firmware Firmware Firmware [157] Firmware Firmware Firmware [160] Firmware Firmware Firmware [163] Firmware Firmware Firmware [166] Firmware Firmware Firmware [169] Firmware Firmware Firmware [172] Firmware Firmware Firmware [175] Firmware Firmware Firmware [178] Firmware IT Management [181] Management Software [184] [187] [190] Mechanical [193] Assurance Assurance Assurance [196] Assurance Assurance Assurance [199] Assurance Assurance [202] Assurance Assurance Assurance [205] Assurance Assurance Assurance [208] Assurance Assurance Assurance [211] Assurance Assurance Assurance [214] Assurance Assurance Assurance [217] Assurance Assurance Assurance [220] Assurance Assurance [223] IT IT IT [226] Management Management Management [229] Mechanical Management Management [232] Mechanical Electrical [235] Mechanical Mechanical Mechanical [238] Mechanical Mechanical [241] Management [244] Management Management [247] Electrical Electrical Electrical [250] Mechanical Mechanical Management [253] Container Electrical Container [256] Container Container Container [259] Container Container Container [262] Electrical Electrical Electrical [265] Electrical Electrical Electrical [268] Electrical Firmware Firmware [271] Firmware Firmware Firmware [274] Firmware Mechanical Mechanical [277] Container Assurance Assurance [280] Assurance Assurance Assurance [283] Container Management [286] Container Container Container [289] Container Container Management [292] Management Electrical Firmware [295] Factory Factory Mechanical [298] Management Management [301] Electrical Electrical Electrical [304] Electrical Electrical Electrical [307] Management Management [310] Management Management Management [313] Management Management Assurance [316] Assurance Assurance Research [319] Research Management Management [322] Firmware Electrical Management [325] Firmware Electrical Management [328] Management Firmware Electrical [331] Mechanical Management Management [334] Management Management Management [337] Mechanical Firmware Management [340] Mechanical Firmware Electrical [343] Management Management Management [346] Mechanical Electrical Electrical [349] Management Mechanical Firmware [352] Electrical Management [355] Mechanical Electrical Management [358] Firmware [361] Mechanical Mechanical Mechanical [364] Mechanical Mechanical Container [367] Management Container Container [370] Management Electrical Electrical [373] Electrical Electrical Electrical [376] Electrical Electrical Electrical [379] Electrical Electrical Firmware [382] Firmware Firmware Firmware [385] Firmware Management Mechanical [388] Mechanical Mechanical Management [391] Assurance Assurance [394] Assurance Assurance Assurance [397] Assurance Firmware Electrical [400] Quality Quality [403] Quality Quality Quality [406] Quality Firmware Firmware [409] Assurance Factory [412] Software IT Lab [415] IT [418] IT [421] IT [424] Assurance Assurance [427] Firmware Firmware [430] Software Quality Electrical [433] [436] [439] Assurance Firmware Firmware [442] Mechanical Mechanical SCM [445] IT Management [448] Management Management Management [451] Factory Assurance IT [454] [457] Firmware Assurance [460] Assurance Firmware Assurance [463] Mechanical Mechanical [466] Mechanical IT IT [469] Assurance Assurance Assurance [472] Mechanical Assurance [475] [478] Electrical Mechanical [481] Mechanical Mechanical Mechanical [484] Mechanical Firmware [487] Assurance Assurance Assurance [490] Firmware Mechanical [493] Firmware Assurance Management [496] Management Management Management [499] Management Assurance Management [502] Quality Assurance Management [505] Assurance Management Management [508] Management [511] Electrical Firmware [514] Mechanical Assurance Electrical [517] Electrical Electrical Electrical [520] Electrical Electrical Electrical [523] Electrical Electrical Electrical [526] Electrical Electrical Electrical [529] Electrical Electrical Electrical [532] Electrical Firmware Firmware [535] Firmware Factory Firmware [538] Firmware Firmware Firmware [541] Firmware Firmware Firmware [544] Firmware Firmware Firmware [547] Firmware Firmware Firmware [550] Mechanical Mechanical Mechanical [553] Mechanical Mechanical Mechanical [556] Mechanical Mechanical Assurance [559] Assurance Assurance Assurance [562] Assurance Assurance Assurance [565] Assurance Assurance Assurance [568] Assurance Management Assurance [571] Assurance Assurance Factory [574] IT IT IT [577] IT IT Lab [580] Management Electrical Electrical [583] Mechanical Firmware [586] Administration Mechanical Electrical [589] Firmware Mechanical AI [592] Lab 16 Levels: Administration AI ... Software
Et j'ai obtenu:
où" df "est la trame de données obtenue en lisant le csv et le facteur (df [ discipline]) est:
ggplot(df,aes(x= factor(1), fill= factor(df[,discipline])))+ geom_bar(stat="count")+ scale_y_continuous(breaks = seq(0,12,3), labels = c("0", "25%", "50%", "75%", "100%")) + coord_polar(theta='y') + theme(axis.text.y = element_blank(), axis.title.y = element_blank(), axis.ticks.y = element_blank(), axis.title.x = element_blank()) + labs(fill = "Discipline")
Pouvez-vous me dire ce qui ne va pas avec le code? Merci encore.
Bienvenue dans Stack Overflow! Vous devez fournir un exemple reproductible . Lisez le lien en détail afin de pouvoir fournir un exemple de votre ensemble de données et de ce que vous avez jusqu'à présent (je suppose que vous avez un code de camembert dans
ggplot
qui ne fonctionne pas, vous devriez le partager) . Acclamations.suivant la bonne suggestion de @M - ... Si j'étais vous, j'enregistrerais un sous-ensemble de vos données dans un fichier
csv
(ou un ensemble de données de test au format similaire), puis je le collerais dans un bloc de code dans votre question principale afin que les autres puissent créer des réponses à partir de celle-ci. Cela étant dit, lorsque vous utilisezstat = "identity"
, il vous suffit de calculer les décomptes manuellement au préalable. Du haut de ma tête ... je crois que la fonctiontable
utilisée dansdf.count = as.data.frame (table (df))
peut vous donner le format dont vous avez besoin pour cela. Ceci est juste une estimation rapide cependant ...Merci pour votre modification . Cela m'a aidé à mieux comprendre votre problème. Nous avons généralement besoin d'un exemple de jeu de données partagé avec une fonction appelée
dput
(le lien précédent que j'ai partagé en parle). Mais ici, j'ai pu copier votre texte sous forme de données. Voir ma réponse ci-dessous, j'espère que cela vous aidera. J'ajouterai un commentaire sous ma réponse à propos de vos données.