histogrammes

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

Véronique Darmendrail
Messages : 37
Enregistré le : 27 Fév 2020, 10:49

histogrammes

Messagepar Véronique Darmendrail » 02 Juil 2020, 10:01

Bonjour

Je cherche à réaliser des histogrammes de deux sous-populations avec en ordonnées les pourcentages et non le nombre d'individus, avec une barre de pointillés pour bien voir où se situe 0.
Comme je ne sais pas faire la barre de pointillés avec Lattice, j'ai essayé avec Ggplot2 et je suis surprise par deux choses :
- dans ggplot2 avec le paramètre aes(y=..density..), il me semble que je devrais obtenir des ordonnées entre 0 et 1. Si c'est entre 0 et 100, ça me va aussi mais qu'ai-je fait de particulier qui a changé ça ?
- les hauteurs en pourcentage pour chaque barre de l'histogramme ne sont pas les mêmes entre lattice et ggplot2. Pourquoi ?

Voici le code utilisé :
Les données à utiliser sont ici : https://drive.google.com/file/d/163jD06 ... sp=sharing

Code : Tout sélectionner

library(dplyr)
library(ggplot2)
library(lattice)
merged <- read.csv("merged.csv", # le fichier
                header = TRUE, # nom des colonnes
                sep = ";", # séparateur de champ
                dec = ",", # séparateur décimal
                na.strings = "") # données mq.

str(merged) # contrôle du type des variables
head(merged) # affichage des 6 premières lignes
summary(merged) # le résumé des données

#dire que merged$CODETME01 est un facteur d'appartenance à une catégorie et non une valeur numérique
merged$CODETME01 <- as.factor(merged$CODETME01)

#Pop séparée
histogram(~ Var | CODETME01, data = merged, nint = 20, col="grey" ,type="percent")

#choix du nom de fichier puis enregistrement de l'histogramme
nom_fichier_histogramme <- paste(c("histogramme_TME01_2005_2018"),c("Var"),c(".png"))
dev.print(device = png, file = nom_fichier_histogramme, width = 600)


## histogrammes séparés avec ggplot pour avoir la barre de pointillés sur le 0
# aes(y=..density..), permet que ce soit en densité (entre 0 et 1 normalement et non en nombre)
histos<- ggplot(merged, aes(x=Var, color=CODETME01)) +
  geom_histogram(fill="white", aes(y=..density..), position="dodge",breaks=seq(-0.15, 0.15, by=0.015)) +scale_color_grey() +
  theme(legend.position="top") + facet_grid(CODETME01 ~ .) + geom_vline(aes(xintercept=0),
                                                                        linetype="dashed", size=0.5)
histos

#enregistrement image
nom_fichier_histo_separes <- paste(c("histo_separes_avecbarre0"),c("Var"),c("resultat"),c(".png"))
dev.print(device = png, file = nom_fichier_histo_separes, width = 600)


Merci d'avance pour votre aide

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: histogrammes

Messagepar Mickael Canouil » 02 Juil 2020, 11:08

Bonjour,

pour partager un jeu de donnée (ou un extrait) : Comment insérer des données dans un message ?

A la question de "que fait la statistique "density" => "density of points in bin, scaled to integrate to 1" (En provenance directe de la documentation de geom_histogram).
Au passage, sur les dernière version de ggplot2, l'usage est passé de "..density.." à "stat(density)".

Ici, vous utilisez deux façons différentes de construire votre histogramme avec dans un cas une définition manuel des "bins" et dans l'autre via la méthode par défaut.
En somme, il serait plus simple de trouver les points communs entre les deux approches sous leur formes présentées ici, que de chercher les différences.

Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

Véronique Darmendrail
Messages : 37
Enregistré le : 27 Fév 2020, 10:49

Re: histogrammes

Messagepar Véronique Darmendrail » 02 Juil 2020, 12:01

Merci @Mickael Canouil
Mickael Canouil a écrit :Bonjour,

pour partager un jeu de donnée (ou un extrait) : Comment insérer des données dans un message ?

ok pour la prochaine fois

A la question de "que fait la statistique "density" => "density of points in bin, scaled to integrate to 1" (En provenance directe de la documentation de geom_histogram).


Je suis une bille en anglais mais du coup les densités devraient être entre 0 et 1, non ? Or j'obtiens vraisemblablement des pourcentages.

Au passage, sur les dernière version de ggplot2, l'usage est passé de "..density.." à "stat(density)".


Je viens de corriger dans mon code mais c'est transparent.
Ici, vous utilisez deux façons différentes de construire votre histogramme avec dans un cas une définition manuel des "bins" et dans l'autre via la méthode par défaut.
En somme, il serait plus simple de trouver les points communs entre les deux approches sous leur formes présentées ici, que de chercher les différences.

Cordialement,


Je voudrais juste m'assurer que cette deuxième façon de faire qui me permet de mettre les pointillés est bien "conforme". Du coup je suis étonnée de ne pas trouver la même chose. Avec ggplot2, je n'arrive pas à donner le nombre de bins autrement que manuellement. Mais cela devrait donner la même chose ?
Si je mets bins=20 avec ggplot, il ne m'en met que 19 et centre une barre sur 0 alors que je voudrais que 0 soit justement entre 2 barres et pas au milieu. Donc j'ai fait manuellement.
Merci d'avance pour votre aide

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: histogrammes

Messagepar Mickael Canouil » 02 Juil 2020, 12:14

Sans véritable exemple reproductible et données, je ne peux pas vous donner une réponse (avec du code) détaillée et adaptée.
Mickaël
mickael.canouil.fr | rlille.fr

Véronique Darmendrail
Messages : 37
Enregistré le : 27 Fév 2020, 10:49

Re: histogrammes

Messagepar Véronique Darmendrail » 02 Juil 2020, 12:31

Mickael Canouil a écrit :Sans véritable exemple reproductible et données, je ne peux pas vous donner une réponse (avec du code) détaillée et adaptée.


Rebonjour
J'ai réduit le jeu de données :
Je dispose d'un jeu de données de 200 lignes avec 2 variables CODETME01 qui prend la valeur 0 ou 1 et qui me sert pour les deux sous-groupes, et une variable "Var" que j'étudie.
Voici le jeu de valeurs :

Code : Tout sélectionner

merged <-
structure(list(CODETME01 = structure(c(1L, 1L, 1L, 1L, 1L, 2L,
2L, 1L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 1L,
2L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L,
1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 1L,
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 2L, 2L,
2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 1L,
1L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 2L,
2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 2L,
2L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 2L,
1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 1L,
1L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 1L,
1L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L,
1L), .Label = c("0", "1"), class = "factor"), Var = c(-0.054876916535788,
0.100870150581244, 0.000633442221711, 0.016637410131538, -0.149352516594171,
-0.052348572714618, 0.096726464718798, -0.054311261845755, -0.006716950177202,
0.06989479729327, 0.073944096560777, -0.023140374651424, 0.055500078497178,
0.116644712399095, 0.028227949536273, -0.113008047337383, -0.049489952715083,
0.086169551708833, 0.029040724732511, -0.014581273605235, 0.072408587533981,
0.044579582551192, -0.007541421631323, -0.144294970957936, 0.085535358599341,
0.016650503797432, 0.041399091811348, 0.078421339441211, 0.142962551840475,
0.084416250248992, -0.003044438690467, 0.034792085408093, 0.050430058905151,
0.056777368943881, -0.027863128396536, 0.108807558127519, 0.044119036197243,
0.043367795639324, -0.099032062915911, 0.020886236143915, -0.068629842891737,
0, 0.147531214445409, -0.004358070397484, 0.099773834590183,
0.075769959772523, -0.095834705933201, 0.084729357256083, 0.052021471277358,
0.071398605145817, 0.04938395654063, -0.046973541138094, -0.050701922722552,
-0.005178874154495, 0, 0.06651342651546, 0.064851647234452, -0.029641222360992,
-0.009536216667841, 0.122391678309945, 0.067170128395397, 0.002236764108036,
0.101396449704142, 0.078845823499836, -0.043526703140439, 0.01252382272736,
0.13115342275482, 0.094463508309754, 0.100602551699506, 0.137720893885565,
-0.003349638097466, 0.041441390277147, -0.031297241950433, 0.046907168070367,
-0.035771327164406, 0.056072393186747, 0.006719907675078, 0.113315332811357,
-0.006081735985533, -0.066962304785709, 0.049425679846717, 0.030810987822281,
-0.055623087766803, -0.135053539947081, 0.10155241583813, 0.00532101668576,
0.10822969227874, 0.04724141898985, 0.010808878600123, -0.08042101682344,
0.002059913679718, 0.04428516716757, 0.044867512826013, -0.14072380952381,
0.141692238982294, 0.051258032422635, 0.03280979435939, -0.130388980116766,
0.112353732963185, 0.137334073143982, 0.013983108807822, 0.098357566890103,
0.011846079941765, -0.059474961041669, 0.058274128454792, 0.041867782088261,
0.092298644610883, -0.009405074365704, -0.068213120338261, 0.137174542277684,
-0.130579812333894, 0.043341532119314, -0.101450086236466, 0.074470163101866,
0.038835532981972, 0.099047799936689, -0.131233080533034, -0.099889021384062,
0.075848557139451, 0.104886938522755, -0.118178814840177, 0.00429605877938,
0.049283835465211, 0.003378070675841, 0.081200408500115, -0.000676692456633,
0.127513979616818, -0.148533356485285, 0.014123741951616, 0.050631647638329,
0.106012713568718, -0.118458620164481, 0.066792532708904, 0.059308070157823,
-0.034886371071755, 0, 0.00287780660546, 0.086258939351723, -0.06165800471302,
0.119470637368669, 0.055833333333333, 0.032496186349189, 0.007703116189223,
6.1652281134402e-05, 0.090727386456975, 0.074089388394191, 0.014283144831089,
0.035401800382547, 0.079369601812595, 0.008117482517483, 0.077281751323772,
0.041375310308045, 0.022429164309113, 0.074018295923982, -0.05692111390484,
0.076081240456462, 0.140364583333333, -0.051801951068414, 0.135712070629762,
0.09233284740554, -0.010901702202182, 0, 0.057833719307451, 0.003518123667377,
0.111557044293899, 0.123977272727273, -0.06246012158313, 0.021184834123223,
-0.061418833361137, -0.077252479863103, 0.092006743229712, 0.059269604684955,
0.148975810269949, -0.057154675734772, 0.049401234189549, -0.097916873363513,
0.069016626174239, 0.038864477869633, 0.057919559191023, -0.013382496570929,
0.045521531683296, 0.000497781883925, 0.004544451440929, 0.13791817616174,
0.033588699703198, 0.088442478784375, 0.008283235749114, 0.01342778279007,
-0.01459868247589, -0.072106129214984, -0.103008069590218, 0,
0.006870499249654, -0.010405731309406, 0.142708486747585, 0.07216295639801,
0, 0.044788105558663, -0.015630198782083)), row.names = c(NA,
-199L), class = "data.frame")



Voici donc mon code, corrigé sur stat(density)

Code : Tout sélectionner

library(dplyr)
library(ggplot2)
library(lattice)

summary(merged)
#dire que merged$CODETME01 est un facteur d'appartenance à une catégorie et non une valeur numérique
merged$CODETME01 <- as.factor(merged$CODETME01)

#Pop séparée
histogram(~ Var | CODETME01, data = merged, nint = 20, col="grey" ,type="percent")

#choix du nom de fichier puis enregistrement de l'histogramme
nom_fichier_histogramme <- paste(c("histogramme_TME01_2005_2018"),c("Var"),c(".png"))
dev.print(device = png, file = nom_fichier_histogramme, width = 600)


## histogrammes séparés avec ggplot pour avoir la barre de pointillés sur le 0
# aes(y=..density..), permet que ce soit en densité (entre 0 et 1 normalement et non en nombre)
histos<- ggplot(merged, aes(x=Var, color=CODETME01)) +
  geom_histogram(fill="white", aes(y=stat(density)), position="dodge",breaks=seq(-0.15, 0.15, by=0.015)) +scale_color_grey() +
  theme(legend.position="top") + facet_grid(CODETME01 ~ .) + geom_vline(aes(xintercept=0),
                                                                        linetype="dashed", size=0.5)
histos

#enregistrement image
nom_fichier_histo_separes <- paste(c("histo_separes_avecbarre0"),c("Var"),c("resultat"),c(".png"))
dev.print(device = png, file = nom_fichier_histo_separes, width = 600)



J'espère que ce coup-ci je suis dans les clous :-)

L'histogramme avec lattice monte autour de 17 et celui avec ggplot autour de 8 pour le code 0 alors que j'ai l'impression de faire la même chose ???
Merci pour votre aide.

Fred Santos
Messages : 233
Enregistré le : 11 Avr 2009, 10:00
Contact :

Re: histogrammes

Messagepar Fred Santos » 02 Juil 2020, 15:52

Bonjour,

L'histogramme que vous obtenez avec ggplot est conforme à celui que vous obtiendriez avec l'instruction lattice correspondante :

Code : Tout sélectionner

histogram(~ Var | CODETME01, data = merged, col = "grey",
          type = "density", breaks = seq(-0.15, 0.15, by=0.015))

Pour le reste, mon peu d'appétence pour ggplot ne me permet pas d'être utile ici :-)

En revanche :
mais du coup les densités devraient être entre 0 et 1, non ?

Précisément non : lorsqu'on choisit un "density histogram", c'est l'aire totale formée par les barres de l'histogramme qui doit être égale à 1. Mais lorsque l'étendue de la variable étudiée est très faible et que les bins sont très étroits (comme ici), ça n'empêche pas certains bins d'atteindre une hauteur (très) supérieure à 1.

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: histogrammes

Messagepar Mickael Canouil » 02 Juil 2020, 16:16

L'argument "boundary" est la solution optimale pour ggplot2.
la "fonction" after_stat() est une fonction pour faire des calculs plus "exotiques" basés sur les "statistiques" (count, density, ncount, ndensity).
A vous d'adapter pour faire le bon calcul.

Code : Tout sélectionner

library(ggplot2)
ggplot(data = merged, aes(= Var, color = CODETME01)) +
  geom_histogram(aes(= after_stat(count / sum(count))), fill = "white", boundary = 0) +
  geom_vline(xintercept = 0, linetype = "dashed", size = 0.5) +
  scale_y_continuous(labels = function(x) paste(round(x, digits = 2), "%")) +
  scale_color_grey() +
  facet_grid(cols = vars(CODETME01)) +
  theme(legend.position = "top")
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.   

Image
Mickaël
mickael.canouil.fr | rlille.fr

Véronique Darmendrail
Messages : 37
Enregistré le : 27 Fév 2020, 10:49

Re: histogrammes

Messagepar Véronique Darmendrail » 02 Juil 2020, 19:34

Un grand merci à @Mickael Canouil et @Fred Santos , grâce à vous j'ai bien compris la différence entre les paramètres density et percent, comment mettre 0 entre deux barres et comprendre les différences entre mes graphiques.

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

Re: histogrammes

Messagepar Logez Maxime » 03 Juil 2020, 07:35

Bonjour,

Il y a quand même une chose à laquelle faire attention.
Dans le code lattice que tu as proposé les proportions qui ont été affichées sont celles par niveau modalité de CODETME01, des proportions conditionnelles (d'où le 17).
Le code ggplot2 donné par Mickael donne des proportions en se basant sur l'ensemble des données , d'où le fait que tu ne dépasses pas 7.5% dans ce graph, ce sont des proportions marginales.
Pour te convaincre des proportions marginales

Code : Tout sélectionner

# je reprends le graph de Mickael
p <- ggplot(data = merged, aes(x = Var, color = CODETME01)) +
  geom_histogram(aes(y = after_stat(count/sum(count))), stat = "bin", fill = "white", boundary = 0) +
  geom_vline(xintercept = 0, linetype = "dashed", size = 0.5) +
  scale_y_continuous(labels = function(x) paste(round(x, digits = 2), "%")) +
  scale_color_grey() +
  facet_grid(cols = vars(CODETME01)) +
  theme(legend.position = "top")
 
# les données derrières
res <- ggplot_build(p)$data[[1]]

# les proportions conditionnelles
tapply(res$count, res$PANEL, function(x) max(x/sum(x))) # equivalent à count/sum(count)
        1         2
0.1219512 0.1184211 # proche de lattice (tout dépend des intervalles pris sur x)

tapply(re$count, res$PANEL, function(x) max(x/sum(res$count))) # idem mais en prenant l'ensemble des valeurs
         1          2
0.07537688 0.04522613
# ce sont ces valeurs qui sont représentées sur le graph


Il te faut donc être vigilante parce que ces deux représentations ne sont pas identiques.

Pour faire calculer des fréquences conditionnelles (par modalité) tu peux créer une variable de "poids", de sorte que la somme des poids pour chaque modalité fasse 1 et t'en servir dans le ggplot :

Code : Tout sélectionner

merged$w <- with(merged, ave(Var, CODETME01, FUN = function(x) 1/length(x)))

ggplot(data = merged, aes(x = Var, color = CODETME01)) +
  geom_histogram(aes(y = after_stat(count), weight = w), stat = "bin", fill = "white", boundary = 0) +
  geom_vline(xintercept = 0, linetype = "dashed", size = 0.5) +
  scale_y_continuous(labels = function(x) paste(round(x*100, digits = 2), "%")) +
  scale_color_grey() +
  facet_grid(cols = vars(CODETME01)) +
  theme(legend.position = "top")


La tu retombes sur le maximum des fréquences calculées pour chaque modalité :

Code : Tout sélectionner

        1         2
0.1219512 0.1184211


Charge à toi de savoir ce que tu veux représenter.

Cordialement,
Maxime

Véronique Darmendrail
Messages : 37
Enregistré le : 27 Fév 2020, 10:49

Re: histogrammes

Messagepar Véronique Darmendrail » 03 Juil 2020, 07:56

Merci @Logez Maxime

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: histogrammes

Messagepar Mickael Canouil » 03 Juil 2020, 13:02

En effet, je n'avais pas précisé que les pourcentages étaient sur l'ensemble, pour le faire par "color" (même variable que votre facet) et directement en ggplot2.

Code : Tout sélectionner

library("ggplot2")
ggplot(data = merged, aes(= Var, color = CODETME01)) +
  geom_histogram(
    mapping = aes(= after_stat(count / tapply(count, color, sum)[color])), # "color" can be replaced by any defined aesthetics, i.e., group, fill, etc.
    fill = "white", 
    boundary 
= 0
  
) +
  geom_vline(xintercept = 0, linetype = "dashed", size = 0.5) +
  scale_y_continuous(name = "Count", labels = function(x) paste(round(* 100, digits = 2), "%")) +
  scale_color_grey() +
  facet_grid(cols = vars(CODETME01)) +
  theme(legend.position = "top"

Image

EDIT: j'ai ajouté le facteur 100 déjà manquant sur mon code précédent (merci Maxime)
Mickaël
mickael.canouil.fr | rlille.fr

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

Re: histogrammes

Messagepar Logez Maxime » 03 Juil 2020, 14:04

re,

Attention les étiquettes de l'axe des ordonnées ne sont pas correctes il me semble (facteur 100).

Cordialement,
Maxime

Véronique Darmendrail
Messages : 37
Enregistré le : 27 Fév 2020, 10:49

Re: histogrammes

Messagepar Véronique Darmendrail » 09 Juil 2020, 21:21

Fred Santos a écrit :Bonjour,

L'histogramme que vous obtenez avec ggplot est conforme à celui que vous obtiendriez avec l'instruction lattice correspondante :

Code : Tout sélectionner

histogram(~ Var | CODETME01, data = merged, col = "grey",
          type = "density", breaks = seq(-0.15, 0.15, by=0.015))

Pour le reste, mon peu d'appétence pour ggplot ne me permet pas d'être utile ici :-)

En revanche :
mais du coup les densités devraient être entre 0 et 1, non ?

Précisément non : lorsqu'on choisit un "density histogram", c'est l'aire totale formée par les barres de l'histogramme qui doit être égale à 1. Mais lorsque l'étendue de la variable étudiée est très faible et que les bins sont très étroits (comme ici), ça n'empêche pas certains bins d'atteindre une hauteur (très) supérieure à 1.


Bonsoir
Je rebondis encore sur ce sujet. Pourquoi ces deux lignes de codes ne sont pas équivalentes (toujours avec les mêmes données ? :

Code : Tout sélectionner

histogram(~ Var | CODETME01, data = merged, nint = 20, col="grey" ,type="density")
histogram(~ Var | CODETME01, data = merged, breaks = seq(-0.15, 0.15, by=0.015), col="grey" ,type="density")

(0,15x2)/20 = 0,015, ça devrait donc vouloir dire la même chose, non ? Forcément non, vu que cela ne donne pas le même résultat mais je ne comprends pas pourquoi.
Merci d'avance

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: histogrammes

Messagepar Mickael Canouil » 10 Juil 2020, 08:04

Le minimum de "Var" n'est pas égal à -0.15 et le maximum de "Var" n'est pas égal à 0.15.

Code : Tout sélectionner

seq(-0.15, 0.15, by = 0.015)
#>  [1] -0.150 -0.135 -0.120 -0.105 -0.090 -0.075 -0.060 -0.045 -0.030 -0.015  0.000  0.015  0.030  0.045  0.060  0.075  0.090  0.105  0.120  0.135
#> [21]  0.150
seq(min(merged$Var), max(merged$Var), by = 0.015)
#>  [1] -0.1493525166 -0.1343525166 -0.1193525166 -0.1043525166 -0.0893525166 -0.0743525166 -0.0593525166 -0.0443525166 -0.0293525166 -0.0143525166
#> [11]  0.0006474834  0.0156474834  0.0306474834  0.0456474834  0.0606474834  0.0756474834  0.0906474834  0.1056474834  0.1206474834  0.1356474834

seq(-0.15, 0.15, length.out = 20)
#>  [1] -0.150000000 -0.134210526 -0.118421053 -0.102631579 -0.086842105 -0.071052632 -0.055263158 -0.039473684 -0.023684211 -0.007894737  0.007894737
#> [12]  0.023684211  0.039473684  0.055263158  0.071052632  0.086842105  0.102631579  0.118421053  0.134210526  0.150000000
seq(min(merged$Var), max(merged$Var), length.out = 20)
#>  [1] -0.149352517 -0.133651026 -0.117949535 -0.102248044 -0.086546553 -0.070845062 -0.055143571 -0.039442080 -0.023740589 -0.008039099  0.007662392
#> [12]  0.023363883  0.039065374  0.054766865  0.070468356  0.086169847  0.101871338  0.117572828  0.133274319  0.148975810   
Mickaël
mickael.canouil.fr | rlille.fr

Véronique Darmendrail
Messages : 37
Enregistré le : 27 Fév 2020, 10:49

Re: histogrammes

Messagepar Véronique Darmendrail » 10 Juil 2020, 08:20

Mickael Canouil a écrit :Le minimum de "Var" n'est pas égal à -0.15 et le maximum de "Var" n'est pas égal à 0.15.

Code : Tout sélectionner

seq(-0.15, 0.15, by = 0.015)
#>  [1] -0.150 -0.135 -0.120 -0.105 -0.090 -0.075 -0.060 -0.045 -0.030 -0.015  0.000  0.015  0.030  0.045  0.060  0.075  0.090  0.105  0.120  0.135
#> [21]  0.150
seq(min(merged$Var), max(merged$Var), by = 0.015)
#>  [1] -0.1493525166 -0.1343525166 -0.1193525166 -0.1043525166 -0.0893525166 -0.0743525166 -0.0593525166 -0.0443525166 -0.0293525166 -0.0143525166
#> [11]  0.0006474834  0.0156474834  0.0306474834  0.0456474834  0.0606474834  0.0756474834  0.0906474834  0.1056474834  0.1206474834  0.1356474834

seq(-0.15, 0.15, length.out = 20)
#>  [1] -0.150000000 -0.134210526 -0.118421053 -0.102631579 -0.086842105 -0.071052632 -0.055263158 -0.039473684 -0.023684211 -0.007894737  0.007894737
#> [12]  0.023684211  0.039473684  0.055263158  0.071052632  0.086842105  0.102631579  0.118421053  0.134210526  0.150000000
seq(min(merged$Var), max(merged$Var), length.out = 20)
#>  [1] -0.149352517 -0.133651026 -0.117949535 -0.102248044 -0.086546553 -0.070845062 -0.055143571 -0.039442080 -0.023740589 -0.008039099  0.007662392
#> [12]  0.023363883  0.039065374  0.054766865  0.070468356  0.086169847  0.101871338  0.117572828  0.133274319  0.148975810    

Bonjour
Ah oui ok. Je comprends maintenant la nuance. Merci beaucoup !


Retourner vers « Questions en cours »

Qui est en ligne

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