Réorganiser un Boxplot par "MIN-MAX" en dehors des valeurs exceptionnelles

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

Luca Niang
Messages : 26
Enregistré le : 01 Avr 2012, 10:41

Réorganiser un Boxplot par "MIN-MAX" en dehors des valeurs exceptionnelles

Messagepar Luca Niang » 13 Oct 2022, 09:59

Code reproductible :

Avec la fonction reorder, on peut par exemple trier avec la variance. Mais comment faire pour trier sleon la "longueur de la barre". En clair, selon la différence entre le minimum de la série et la maximum de la série en excluant les valeurs exceptionnelles

Code : Tout sélectionner

library(ggplot2)

data(airquality)
airquality$Month <- factor(airquality$Month,
                           labels = c("May", "Jun", "Jul", "Aug", "Sep"))


ggplot(airquality, aes(x = reorder(Month, Ozone, function(x) -var(x, na.rm = TRUE)), y = Ozone)) +
  geom_boxplot()
#> Warning: Removed 37 rows containing non-finite values (stat_boxplot).


Image

J'aimerais donc que juillet soit tout à gauche, avant août

Merci beaucoup !

Luca Niang
Messages : 26
Enregistré le : 01 Avr 2012, 10:41

Re: Réorganiser un Boxplot par "MIN-MAX" en dehors des valeurs exceptionnelles

Messagepar Luca Niang » 13 Oct 2022, 10:13

En fait dans cette clause,

-var(x, na.rm = TRUE)

il me suffirait de dire

fais moi la différence entre
"trouve moi le MAX de la serie" parmi les valeurs situées dans Q3 + ((Q3-Q1)*1,5)

et
"trouve moi le MIN de la serie" parmi les valeurs sitées dans Q1-((Q3-Q1)*1,5)


c'est ce "PARMI" que j'ia du mal à coder

Luca Niang
Messages : 26
Enregistré le : 01 Avr 2012, 10:41

Re: Réorganiser un Boxplot par "MIN-MAX" en dehors des valeurs exceptionnelles

Messagepar Luca Niang » 13 Oct 2022, 13:04

J'arrive à récupérer mes bornes

as.numeric((quantile(x, 0.25))) - as.numeric((quantile(x, 0.75)) - (quantile(x, 0.25))) *1.5

as.numeric((quantile(x, 0.75))) + as.numeric((quantile(x, 0.75)) - (quantile(x, 0.25))) *1.5

Ne me reste plus qu'à reusir à faire un which, peut etre ?

Luca Niang
Messages : 26
Enregistré le : 01 Avr 2012, 10:41

Re: Réorganiser un Boxplot par "MIN-MAX" en dehors des valeurs exceptionnelles

Messagepar Luca Niang » 13 Oct 2022, 13:27

J'y suis presque mais ce n'est pas tout à fait juste

ggplot(vppr, aes(x = fct_reorder(clg, part_fuite, function(x) -(max(x[x < as.numeric((quantile(x, 0.75))) + as.numeric((quantile(x, 0.75)) - (quantile(x, 0.25))) *1.5]) - min(x[x>as.numeric((quantile(x, 0.25))) - as.numeric((quantile(x, 0.75)) - (quantile(x, 0.25))) *1.5]))), y = part_fuite,fill=clg)) + geom_boxplot() + xlab("Collège") +
theme(legend.position="none") + coord_flip()

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

Re: Réorganiser un Boxplot par "MIN-MAX" en dehors des valeurs exceptionnelles

Messagepar Logez Maxime » 14 Oct 2022, 12:11

Bonjour,

Je serais toi je ferais les calculs avant puis je ferais le graphique :

Code : Tout sélectionner

library(dplyr)
library(ggplot2)

f <- function (x)
{
    x <- x[!is.na(x)]
    q1 <- quantile(x, c(0.25, 0.75), na.rm = T)
    d1 <- diff(q1)
    rg <- q1 + d1 * 1.5 * c(-1, 1)
    x <- x[x >= rg[1]]
    x <- x[x <= rg[2]]
    rg <- range(x)
    rg
}

ggplot(airquality, aes(reorder(Month, Ozone, FUN = function(x) -diff(f(x))), Ozone)) + geom_boxplot()

# ou
ord1 <- airquality %>% group_by(Month) %>% summarise(rg = diff(f(Ozone))) %>% arrange(desc(rg))
airquality %>% mutate(Month = factor(Month, levels = ord1$Month)) %>%
  ggplot(aes(Month, Ozone)) + geom_boxplot()
Cordialement,
Maxime


Retourner vers « Questions en cours »

Qui est en ligne

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