Afficher nb données par boxplot sur ggplot

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Samuel Pereira Dias
Messages : 62
Enregistré le : 07 Mar 2014, 11:09

Afficher nb données par boxplot sur ggplot

Messagepar Samuel Pereira Dias » 03 Sep 2022, 15:35

Bonjour,

Une question facile pour bon nombre d'entre vous mais que je n'arrive pas à résoudre malgré de nombreuses recherches sur internet. Je me tourne encore une fois vers vous. J'aimerais simplement afficher le nombre de données incluses pour chaque boxplot produit au sein d'une double boucle for.

Ci-dessous le jeu de donnée

Code : Tout sélectionner

m1<-structure(list(Catégorie.de.l.animal = c("Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons"
), Sous.catégorie.de.l.animal = c("Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)"), Groupe.de.l.animal = c("Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poisson d'eau douce - pisciculture", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce - pêchés localement", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce - pêchés localement", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce - pêchés localement", "Poissons d'eau douce - pêchés localement",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce - pêchés localement",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poisson d'eau douce - pisciculture",
"Poissons d'eau douce du lac"), Espèce = c("Capitaine - petit",
"Bib-bic", "Tilapia/Makoke - petit", "Capitaine - petit", "Tilapia/Makoke - petit",
"Capitaine - gros", "Munama", "Capitaine - gros", "Nzombo de lac",
"Poissons d'élevage inconnus - petit", "Tematema", "Capitaine - petit",
"Capitaine - petit", "Tilapia/Makoke - petit", "Miziri", "Bib-bic",
"Tematema", "Tilapia/Makoke - gros", "Nzombo de lac", "Poisson pêché inconnu - petit",
"Fodofodo", "Miziri", "Capitaine - petit", "Munama", "Capitaine - petit",
"Capitaine - petit", "Miziri", "Capitaine - gros", "Capitaine - petit",
"Poisson pêché inconnu - moyen", "Capitaine - petit", "Bib-bic",
"Miziri", "Ndakala", "Capitaine - petit", "Poisson pêché inconnu - petit",
"Poisson pêché inconnu - petit", "Bib-bic", "Munama", "Tilapia/Makoke - petit",
"Fodofodo", "Tilapia/Makoke - gros", "Capitaine - gros", "Tilapia/Makoke - petit",
"Poisson pêché inconnu - moyen", "Boloi", "Tilapia/Makoke - petit",
"Bib-bic", "Poissons d'élevage inconnus - moyen", "Tilapia/Makoke - petit"
), conservation = c("Salé", "Salé", "Salé", "Salé", "Congelé",
"Salé", "Salé", "Salé", "Salé", "Salé", "Salé", "Salé",
"Fumé", "Congelé", "Salé", "Salé", "Salé", "Congelé", "Fumé",
"Fumé", "Cuisiné", "Salé", "Congelé", "Salé", "Salé", "Fumé",
"Salé", "Salé", "Salé", "Cuisiné", "Salé", "Salé", "Salé",
"Salé", "Salé", "Frais", "Fumé", "Salé", "Salé", "Salé",
"Salé", "Congelé", "Salé", "Congelé", "Frais", "Salé", "Salé",
"Salé", "Fumé", "Congelé"), Unité = c("Morceau / Pièce",
"Morceau / Pièce", "Morceau / Pièce", "Morceau / Pièce", "Morceau / Pièce",
"Morceau / Pièce", "Kilo", "Morceau / Pièce", "Quartier", "Pile / tas",
"Moitié", "Pile / tas", "Morceau / Pièce", "Kilo", "Kilo",
"Pile / tas", "Kilo", "Morceau / Pièce", "Morceau / Pièce",
"Pile / tas", "Morceau / Pièce", "Pile / tas", "Kilo", "Morceau / Pièce",
"Morceau / Pièce", "Morceau / Pièce", "Kilo", "Kilo", "Morceau / Pièce",
"Plat", "Morceau / Pièce", "Morceau / Pièce", "Pile / tas",
"Pile / tas", "Moitié", "Morceau / Pièce", "Pile / tas", "Kilo",
"Entier", "Morceau / Pièce", "Morceau / Pièce", "Morceau / Pièce",
"Morceau / Pièce", "Moitié", "Pile / tas", "Kilo", "Morceau / Pièce",
"Pile / tas", "Pile / tas", "Kilo"), Prix.d.une.unité = c(500L,
400L, 2500L, 2000L, 2000L, 3000L, 13000L, 5000L, 4000L, 25000L,
7000L, 1500L, 3000L, 12000L, 8000L, 1000L, 12000L, 17000L, 15000L,
6000L, 1500L, 1000L, 14000L, 2500L, 2000L, 2000L, 9000L, 14000L,
1000L, 5000L, 2000L, 500L, 500L, 1000L, 7500L, 2000L, 3000L,
18000L, 4000L, 3000L, 3000L, 12000L, 2000L, 6500L, 6000L, 10000L,
2000L, 1000L, 13000L, 13000L)), row.names = c(3211L, 3218L, 2746L,
1898L, 1705L, 1555L, 2290L, 1159L, 2301L, 3695L, 2085L, 3148L,
2163L, 2879L, 2197L, 3917L, 3016L, 1986L, 2233L, 172L, 3277L,
1656L, 2822L, 2443L, 1624L, 1505L, 1535L, 3841L, 3079L, 1070L,
3096L, 4L, 1138L, 199L, 1204L, 408L, 1062L, 3646L, 3568L, 2102L,
2967L, 2936L, 1553L, 2938L, 3322L, 2307L, 1340L, 3647L, 3387L,
2392L), class = "data.frame")


Ci-dessous mon script de création de plot, j'ai mis des ??? au sein de la fonction geom_text à utiliser pour ce type de besoins.
L'idéal serait qu'ils puissent s'afficher au-dessus de chaque boxplot, ou centre mais il se peut que la visibilité soit mauvaise.

Code : Tout sélectionner

for (i in unique(m1$Catégorie.de.l.animal)) {
  ss<-subset(m1,m1$Catégorie.de.l.animal %in% i)
 
  for (y in unique(ss$Sous.catégorie.de.l.animal)) {
    so<-subset(ss,ss$Sous.catégorie.de.l.animal %in% y)
    # rr<-data.frame(table(so$Unité))
      o<-ggplot(so, aes(x=Unité,y=Prix.d.une.unité, fill=Unité, color=Unité)) +
      geom_boxplot(alpha=0.5)+
      geom_text(???)+
      xlab(label = "Unités") +
      ylab(label = "Prix de la viande par unité") +
      theme(axis.text.x = element_text(angle=30, hjust=1, vjust=1))+
      theme(legend.position="none")+
      ggtitle(paste(i, "et", y))
    x11()
    print(o)
      }
  }
 


Merci beaucoup!
Samuel
Samuel Pereira Dias

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Afficher nb données par boxplot sur ggplot

Messagepar Logez Maxime » 05 Sep 2022, 12:15

Bonjour,

Sans passé par des fonctions stats impliquées dans le ggplot tu peux faire :

Code : Tout sélectionner

for (i in unique(m1$Catégorie.de.l.animal)) {
  ss<-subset(m1,m1$Catégorie.de.l.animal %in% i)
 
  for (y in unique(ss$Sous.catégorie.de.l.animal)) {
    so<-subset(ss,ss$Sous.catégorie.de.l.animal %in% y)
    # rr<-data.frame(table(so$Unité))
    auxi <- ss %>%
      mutate(mn = min(Prix.d.une.unité, na.rm = T), mx = max(Prix.d.une.unité, na.rm = T)) %>%
      group_by(Unité) %>%
      summarise(N = sum(!is.na(Prix.d.une.unité)),
                Prix.d.une.unité = quantile(Prix.d.une.unité, 0.75),
                mn = mn[1],
                mx = mx[1],
                Prix.d.une.unité = Prix.d.une.unité + 0.025*(mx-mn)) # 0.025 a ajuster

    o <-
      ggplot(so, aes(x=Unité,y=Prix.d.une.unité, fill=Unité, color=Unité)) +
      geom_boxplot(alpha=0.5)+
      geom_text(aes(label = N), data = auxi, colour = "black") +
      xlab(label = "Unités") +
      ylab(label = "Prix de la viande par unité") +
      theme(axis.text.x = element_text(angle=30, hjust=1, vjust=1))+
      theme(legend.position="none")+
      ggtitle(paste(i, "et", y))
    dev.new() # compatible multi plateforme (notamment mac)
    print(o)
  }
}
Sinon tu peux adpater ça en remplaçant la médiane par le quartile 75 :
https://stackoverflow.com/questions/28846348/add-number-of-observations-per-group-in-ggplot2-boxplot

Cordialement,
Maxime

Samuel Pereira Dias
Messages : 62
Enregistré le : 07 Mar 2014, 11:09

Re: Afficher nb données par boxplot sur ggplot

Messagepar Samuel Pereira Dias » 05 Sep 2022, 18:58

Hello Maxime,
Encore une fois merci. J'ai une erreur qui s'affiche que je n'arrive pas à comprendre car je maitrise pas encore le tydyverse/dplyr... faut vraiment que je m'y mette, cela semble indispensable. À mon avis rien de bien méchant ici.

L'erreur est celle-ci

Code : Tout sélectionner

Error in `FUN()`:
! `data` must be
  uniquely named but has
  duplicate columns
 


Merci pour le lien vers stack, je ne l'avais pas trouvé. Quelle méthode d'archivage/stockage de ce type de lien tu aurais (si tu en as une) ?
Tu parles de fonction stat de ggplot qui peuvent répondre au besoin de ce post ?

Merci!
Samuel
Samuel Pereira Dias

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Afficher nb données par boxplot sur ggplot

Messagepar Logez Maxime » 06 Sep 2022, 06:31

Bonjour,

difficile de savoir parce que je ne peux pas reproduire ton erreur sur mon ordi.
Essaye de regarder la structure de ton jeu de données au moment de l'erreur ou de poster ici ton tableau 'ss' au moment du crash ?

Cordialement,
Maxime

Samuel Pereira Dias
Messages : 62
Enregistré le : 07 Mar 2014, 11:09

Re: Afficher nb données par boxplot sur ggplot

Messagepar Samuel Pereira Dias » 07 Sep 2022, 08:49

Bonjour Maxime,


Je constate dans le script générant la table auxi destinée à geom_text, il y a deux fois la colonne : "Prix.d.une.unité", c'est à celle-ci que se réfère l'erreur à mon avis.

Code : Tout sélectionner

auxi <- so %>%
      mutate(mn = min(Prix.d.une.unité, na.rm = T), mx = max(Prix.d.une.unité, na.rm = T)) %>%
      group_by(Unité) %>%
      summarise(N = sum(!is.na(Prix.d.une.unité)),
                Prix.d.une.unité = quantile(Prix.d.une.unité, 0.75),
                mn = mn[1],
                mx = mx[1],
                Prix.d.une.unité = Prix.d.une.unité + 0.025*(mx-mn))
               


Ceci fait que les colonnes "Prix.d.une.unité" sont exactement les mêmes dans le DF auxi.

Est-ce normal qu'il n'y ait qu'une seule ligne dans auxi ? Est-ce normal que l'information "Unité" n'y apparaisse pas ?
Lors de l'appel de geom_text, aucun X et Y n'est précisé dans l'aes.


En tout cas, voici le df nommé ss au moment du Crash :

Code : Tout sélectionner

ss<-structure(list(Catégorie.de.l.animal = c("Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons"
), Sous.catégorie.de.l.animal = c("Poissons de mer", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons de mer", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons de mer", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons de mer", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons de mer",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)"
), Groupe.de.l.animal = c("Conserves de poisson", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce - pêchés localement",
"Conserves de poisson", "Poissons d'eau douce - pêchés localement",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce - pêchés localement", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Conserves de poisson", "Poissons d'eau douce - pêchés localement",
"Conserves de poisson", "Conserves de poisson", "Conserves de poisson",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Conserves de poisson", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Conserves de poisson", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac", "Poissons d'eau douce du lac",
"Poissons d'eau douce - pêchés localement", "Poissons d'eau douce du lac",
"Poissons d'eau douce du lac"), Espèce = c("Sardine", "Capitaine - petit",
"Nzombo de lac", "Poisson pêché inconnu - moyen", "Sardine",
"Poisson pêché inconnu - petit", "Munama", "Capitaine - petit",
"Tilapia/Makoke - petit", "Munama", "Tematema", "Bib-bic", "Fodofodo",
"Bib-bic", "Miziri", "Nzombo de lac", "Tilapia/Makoke - petit",
"Poissons de lac inconnus - gros", "Tematema", "Tematema", "Poisson pêché inconnu - moyen",
"Tilapia/Makoke - petit", "Capitaine - petit", "Tilapia/Makoke - gros",
"Sardine", "Poisson pêché inconnu - moyen", "Pilchar", "Pilchar",
"Pilchar", "Tilapia/Makoke - gros", "Nzombo de lac", "Munama",
"Fodofodo", "Capitaine - petit", "Pilchar", "Tilapia/Makoke - petit",
"Miziri", "Capitaine - petit", "Tilapia/Makoke - petit", "Tilapia/Makoke - gros",
"Capitaine - petit", "Boloi", "Tilapia/Makoke - gros", "Sardine",
"Capitaine - petit", "Nzombo de lac", "Tilapia/Makoke - gros",
"Poisson pêché inconnu - moyen", "Capitaine - gros", "Capitaine - petit"
), conservation = c("En conserve", "Fumé", "Fumé", "Frais",
"En conserve", "Cuisiné", "Salé", "Salé", "Salé", "Salé",
"Salé", "Salé", "Fumé", "Salé", "Salé", "Fumé", "Congelé",
"Salé", "Salé", "Salé", "Fumé", "Congelé", "Salé", "Salé",
"En conserve", "Fumé", "En conserve", "En conserve", "En conserve",
"Congelé", "Salé", "Salé", "Fumé", "Salé", "En conserve",
"Congelé", "Salé", "Salé", "Salé", "Cuisiné", "Salé", "Salé",
"Congelé", "En conserve", "Fumé", "Fumé", "Salé", "Frais",
"Salé", "Salé"), Unité = c("Boite de conserve", "Morceau / Pièce",
"Morceau / Pièce", "Pile / tas", "Morceau / Pièce", "Plat",
"Morceau / Pièce", "Morceau / Pièce", "Entier", "Kilo", "Morceau / Pièce",
"Pile / tas", "Morceau / Pièce", "Kilo", "Pile / tas", "Morceau / Pièce",
"Moitié", "Morceau / Pièce", "Kilo", "Kilo", "Morceau / Pièce",
"Morceau / Pièce", "Morceau / Pièce", "Entier", "Boite de conserve",
"Pile / tas", "Boite de conserve", "Boite de conserve", "Boite de conserve",
"Morceau / Pièce", "Moitié", "Morceau / Pièce", "Morceau / Pièce",
"Morceau / Pièce", "Morceau / Pièce", "Morceau / Pièce", "Kilo",
"Kilo", "Morceau / Pièce", "Plat", "Morceau / Pièce", "Gobelet",
"Pile / tas", "Boite de conserve", "Pile / tas", "Morceau / Pièce",
"Morceau / Pièce", "Pile / tas", "Moitié", "Morceau / Pièce"
), Prix.d.une.unité = c(2000L, 4000L, 15000L, 8000L, 2000L,
5000L, 2000L, 10000L, 1000L, 14000L, 5000L, 1000L, 3000L, 13000L,
500L, 6000L, 6500L, 5000L, 17500L, 14000L, 8000L, 5000L, 500L,
4000L, 1500L, 6000L, 3500L, 4000L, 3000L, 15000L, 8500L, 4500L,
3000L, 2500L, 3500L, 2500L, 10000L, 13000L, 1500L, 4000L, 2500L,
1500L, 4000L, 2000L, 5000L, 10000L, 22000L, 10000L, 7000L, 1000L
)), class = c("grouped_df", "tbl_df", "tbl", "data.frame"), row.names = c(NA,
-50L), groups = structure(list(Catégorie.de.l.animal = c("Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons"), Sous.catégorie.de.l.animal = c("Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons d'eau douce (lac, rivière pisciculture)", "Poissons d'eau douce (lac, rivière pisciculture)",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer"
), Unité = c("Entier", "Entier", "Gobelet", "Kilo", "Kilo",
"Kilo", "Kilo", "Kilo", "Moitié", "Moitié", "Moitié", "Morceau / Pièce",
"Morceau / Pièce", "Morceau / Pièce", "Morceau / Pièce", "Morceau / Pièce",
"Morceau / Pièce", "Morceau / Pièce", "Morceau / Pièce", "Morceau / Pièce",
"Morceau / Pièce", "Morceau / Pièce", "Morceau / Pièce", "Pile / tas",
"Pile / tas", "Pile / tas", "Pile / tas", "Pile / tas", "Pile / tas",
"Plat", "Plat", "Boite de conserve", "Boite de conserve", "Morceau / Pièce",
"Morceau / Pièce"), Espèce = c("Tilapia/Makoke - gros", "Tilapia/Makoke - petit",
"Boloi", "Bib-bic", "Capitaine - petit", "Miziri", "Munama",
"Tematema", "Capitaine - gros", "Nzombo de lac", "Tilapia/Makoke - petit",
"Capitaine - petit", "Capitaine - petit", "Fodofodo", "Munama",
"Nzombo de lac", "Poisson pêché inconnu - moyen", "Poissons de lac inconnus - gros",
"Tematema", "Tilapia/Makoke - gros", "Tilapia/Makoke - gros",
"Tilapia/Makoke - petit", "Tilapia/Makoke - petit", "Bib-bic",
"Capitaine - petit", "Miziri", "Poisson pêché inconnu - moyen",
"Poisson pêché inconnu - moyen", "Tilapia/Makoke - gros", "Poisson pêché inconnu - petit",
"Tilapia/Makoke - gros", "Pilchar", "Sardine", "Pilchar", "Sardine"
), conservation = c("Salé", "Salé", "Salé", "Salé", "Salé",
"Salé", "Salé", "Salé", "Salé", "Salé", "Congelé", "Fumé",
"Salé", "Fumé", "Salé", "Fumé", "Fumé", "Salé", "Salé",
"Congelé", "Salé", "Congelé", "Salé", "Salé", "Fumé", "Salé",
"Frais", "Fumé", "Congelé", "Cuisiné", "Cuisiné", "En conserve",
"En conserve", "En conserve", "En conserve"), .rows = structure(list(
    24L, 9L, 42L, 14L, 38L, 37L, 10L, 19:20, 49L, 31L, 17L, 2L,
    c(8L, 23L, 34L, 41L, 50L), c(13L, 33L), c(7L, 32L), c(3L,
    16L, 46L), 21L, 18L, 11L, 30L, 47L, c(22L, 36L), 39L, 12L,
    45L, 15L, c(4L, 48L), 26L, 43L, 6L, 40L, 27:29, c(1L, 25L,
    44L), 35L, 5L), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -35L), .drop = TRUE))


Merci !
Samuel
Samuel Pereira Dias

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Afficher nb données par boxplot sur ggplot

Messagepar Logez Maxime » 07 Sep 2022, 11:50

Samuel Pereira Dias a écrit :Je constate dans le script générant la table auxi destinée à geom_text, il y a deux fois la colonne : "Prix.d.une.unité", c'est à celle-ci que se réfère l'erreur à mon avis.
Non ce n'est pas ça. Rappeler le nom d'une colonne ça écrase les valeurs dans la colonne c'est tout.

Je ne peux pas t'aider chez moi ce tableau ne pose pas problème.

Cordialement,
Maxime

Samuel Pereira Dias
Messages : 62
Enregistré le : 07 Mar 2014, 11:09

Re: Afficher nb données par boxplot sur ggplot

Messagepar Samuel Pereira Dias » 07 Sep 2022, 15:08

Ah, c'est curieux que cela fonctionne de ton coté.

Pour essayer de comprendre,
est-ce normal que la création d'auxi produise cette table ci-dessous ?

Code : Tout sélectionner

     N Prix.d.une.unité  mn    mx Prix.d.une.unité
1 1841            10000 100 30000            10000


> deux fois la colonne "Prix.d.une.unité",
> avec la même valeur malgré un script suggérant la présence d'une autre valeur,

Code : Tout sélectionner

Prix.d.une.unité = quantile(Prix.d.une.unité, 0.75),
Prix.d.une.unité + 0.025*(mx-mn)

> ne renvoie pas les modalités de group_by (Unité).

Merci déjà de ton aide,
Samuel
Samuel Pereira Dias

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Afficher nb données par boxplot sur ggplot

Messagepar Logez Maxime » 08 Sep 2022, 07:36

re,

auxi ne devrait pas générer ce genre de choses, tu devrais obtenir un tableau avec une celle colonne Prix.d.une.unité.
Quelque chose comme ça.

Code : Tout sélectionner

auxi <- structure(list(Unité = c("Entier", "Gobelet", "Kilo", "Moitié",
"Morceau / Pièce", "Pile / tas", "Plat"), N = c(2L, 1L, 6L, 3L,
21L, 7L, 2L), Prix.d.une.unité = c(`75%` = 3250, `75%` = 1500,
`75%` = 14000, `75%` = 7750, `75%` = 8000, `75%` = 7050, `75%` = 4750
), mn = c(1000L, 1500L, 14000L, 6500L, 4000L, 8000L, 5000L),
    mx = c(1000L, 1500L, 14000L, 6500L, 4000L, 10000L, 5000L)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -7L))
Dans le code que je t'avais donné il y a une coquille, auxi doit être généré par so et pas par ss.

Je ne comprends pas trop ce qui se passe chez toi. Après est-ce que c'est une histoire de version de package ou de R différents ? Je n'en sais rien. En tout cas chez moi sur l'exemple que tu nous donnes ça marche parfaitement. auxi peut n'avoir qu'une seule ligne si tu n'as qu'un seul type d'unité. par contre Unité devrait apparaître dedans puisque c'est le facteur qui regroupe les données.
Si tu peux renvoie l'objet so qui te génère cet auxi bizarre.

Cordialement,
Maxime

Samuel Pereira Dias
Messages : 62
Enregistré le : 07 Mar 2014, 11:09

Re: Afficher nb données par boxplot sur ggplot

Messagepar Samuel Pereira Dias » 09 Sep 2022, 07:28

Re,

Je me disais bien que cet auxi avait un problème. C'est curieux effectivement car j'ai vérifié plusieurs fois et de différentes façons ce qui pouvait induire cela et je n'ai rien trouvé.
Comme demandé, je te glisse un extrait plus important de so (que j'avais d'ailleurs remplacé par ss dans ton script également).
Et merci de ton aide,
Samuel

Code : Tout sélectionner

so<-structure(list(Catégorie.de.l.animal = c("Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons"), Sous.catégorie.de.l.animal = c("Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer"), Unité = c("Pile / tas",
"Boite de conserve", "Kilo", "Boite de conserve", "Boite de conserve",
"Boite de conserve", "Morceau / Pièce", "Boite de conserve",
"Morceau / Pièce", "Boite de conserve", "Moitié", "Morceau / Pièce",
"Morceau / Pièce", "Boite de conserve", "Boite de conserve",
"Pile / tas", "Boite de conserve", "Kilo", "Pile / tas", "Boite de conserve",
"Boite de conserve", "Morceau / Pièce", "Quartier", "Boite de conserve",
"Morceau / Pièce", "Boite de conserve", "Boite de conserve",
"Morceau / Pièce", "Pile / tas", "Pile / tas", "Morceau / Pièce",
"Moitié", "Pile / tas", "Boite de conserve", "Boite de conserve",
"Morceau / Pièce", "Boite de conserve", "Kilo", "Boite de conserve",
"Boite de conserve", "Morceau / Pièce", "Pile / tas", "Boite de conserve",
"Boite de conserve", "Morceau / Pièce", "Boite de conserve",
"Morceau / Pièce", "Boite de conserve", "Boite de conserve",
"Boite de conserve", "Boite de conserve", "Pile / tas", "Pile / tas",
"Boite de conserve", "Pile / tas", "Morceau / Pièce", "Boite de conserve",
"Boite de conserve", "Kilo", "Boite de conserve", "Boite de conserve",
"Boite de conserve", "Morceau / Pièce", "Kilo", "Pile / tas",
"Boite de conserve", "Morceau / Pièce", "Boite de conserve",
"Boite de conserve", "Boite de conserve", "Morceau / Pièce",
"Boite de conserve", "Boite de conserve", "Plat", "Morceau / Pièce",
"Morceau / Pièce", "Morceau / Pièce", "Boite de conserve",
"Morceau / Pièce", "Morceau / Pièce", "Morceau / Pièce", "Boite de conserve",
"Morceau / Pièce", "Pile / tas", "Boite de conserve", "Morceau / Pièce",
"Morceau / Pièce", "Morceau / Pièce", "Entier", "Morceau / Pièce",
"Morceau / Pièce", "Boite de conserve", "Boite de conserve",
"Boite de conserve", "Boite de conserve", "Moitié", "Boite de conserve",
"Pile / tas", "Morceau / Pièce", "Boite de conserve"), Prix.d.une.unité = c(2500L,
3500L, 10000L, 4000L, 2000L, 1500L, 2500L, 4500L, 2500L, 4000L,
5000L, 20000L, 4000L, 2000L, 2000L, 2500L, 1200L, 9000L, 1000L,
2000L, 1300L, 150L, 2500L, 1500L, 3500L, 2000L, 1800L, 2000L,
5000L, 3500L, 2500L, 4500L, 5000L, 3000L, 2500L, 2000L, 2000L,
10000L, 3000L, 4000L, 5000L, 5000L, 2000L, 1500L, 6000L, 1500L,
1000L, 3500L, 2000L, 1700L, 2000L, 3000L, 2500L, 2000L, 3000L,
2000L, 3000L, 1700L, 10000L, 4000L, 2000L, 2000L, 2000L, 9000L,
250L, 4000L, 1000L, 2500L, 4000L, 1500L, 1500L, 3500L, 2000L,
1000L, 1500L, 4000L, 2000L, 2000L, 2000L, 1500L, 2000L, 2000L,
4000L, 2500L, 1500L, 1000L, 2000L, 2000L, 2500L, 1500L, 1500L,
2000L, 2000L, 2000L, 3500L, 5500L, 1500L, 2500L, 2500L, 1500L
)), class = c("grouped_df", "tbl_df", "tbl", "data.frame"), row.names = c(NA,
-100L), groups = structure(list(Catégorie.de.l.animal = c("Poissons",
"Poissons", "Poissons", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons"), Sous.catégorie.de.l.animal = c("Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer", "Poissons de mer",
"Poissons de mer", "Poissons de mer", "Poissons de mer"), Unité = c("Boite de conserve",
"Entier", "Kilo", "Moitié", "Morceau / Pièce", "Pile / tas",
"Plat", "Quartier"), .rows = structure(list(c(2L, 4L, 5L, 6L,
8L, 10L, 14L, 15L, 17L, 20L, 21L, 24L, 26L, 27L, 34L, 35L, 37L,
39L, 40L, 43L, 44L, 46L, 48L, 49L, 50L, 51L, 54L, 57L, 58L, 60L,
61L, 62L, 66L, 68L, 69L, 70L, 72L, 73L, 78L, 82L, 85L, 92L, 93L,
94L, 95L, 97L, 100L), 89L, c(3L, 18L, 38L, 59L, 64L), c(11L,
32L, 96L), c(7L, 9L, 12L, 13L, 22L, 25L, 28L, 31L, 36L, 41L,
45L, 47L, 56L, 63L, 67L, 71L, 75L, 76L, 77L, 79L, 80L, 81L, 83L,
86L, 87L, 88L, 90L, 91L, 99L), c(1L, 16L, 19L, 29L, 30L, 33L,
42L, 52L, 53L, 55L, 65L, 84L, 98L), 74L, 23L), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -8L), .drop = TRUE))
Samuel Pereira Dias

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Afficher nb données par boxplot sur ggplot

Messagepar Logez Maxime » 09 Sep 2022, 14:05

re,

encore fois, quand je teste mon code sur l'objet que tu envoies je n'ai pas de souci donc je ne peux pas reproduire ton erreur et voir ce qu'il se passe.
Il faudrait soit que tu envois tout le tableau ss pour que je teste, soit que tue envoies le tableau so complet au moment ou tu as l'erreur.
Est-ce que tu as ce souci avec auxi à toutes les itérations ? Si non alors ça serait vraiment étrange et ça montrerai que le reste du temps le code est bon. Il faut trouver la spécificité de so qui fait planter le code.

Cordialement,
Maxime

Samuel Pereira Dias
Messages : 62
Enregistré le : 07 Mar 2014, 11:09

Re: Afficher nb données par boxplot sur ggplot

Messagepar Samuel Pereira Dias » 09 Sep 2022, 14:34

Hello,

Du coup, j’ai créé un lien de téléchargement externe de m1 car il a presque 4000 lignes, pas évident à mettre dans un dput et partager.
Le voici :
https://we.tl/t-mAa0L9hGmU

Ainsi tu as tout, et encore une fois merci de ta persévérance.
Samuel
Samuel Pereira Dias

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Afficher nb données par boxplot sur ggplot

Messagepar Logez Maxime » 09 Sep 2022, 16:54

re,

Je n'ai pas d'erreurs de mon côté. Essaye de mettre à jour tes packages...
J'ai bien 9 graphs qui se sont créés et sans aucune erreur.

Cordialement,
Maxime

Samuel Pereira Dias
Messages : 62
Enregistré le : 07 Mar 2014, 11:09

Re: Afficher nb données par boxplot sur ggplot

Messagepar Samuel Pereira Dias » 10 Sep 2022, 08:53

Bonjour Maxime,

Cela ne fonctionne toujours pas. Je ne vais pas insister, peut-être tester sur un autre d'ordi car toutes les réinitialisations faites n'ont ici rien produit. C'est un peu inquiétant tout de même.

Je te remercie pour ton aide et accompagnement.
À bientôt,
Samuel
Samuel Pereira Dias


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité