Je suis nouveau sur R et j'essaye de tracer 3 histogrammes sur le même graphique. Tout a bien fonctionné, mais mon problème est que vous ne voyez pas où 2 histogrammes se chevauchent - ils semblent plutôt coupés.
Lorsque je crée des graphiques de densité, cela semble parfait: chaque courbe est entourée d'une ligne de cadre noire et les couleurs sont différentes là où les courbes se chevauchent.
Quelqu'un peut-il me dire si quelque chose de similaire peut être réalisé avec les histogrammes de la première image? Voici le code que j'utilise:
lowf0 <-read.csv (....)
mediumf0 <-read.csv (....)
highf0 <-read.csv(....)
lowf0$utt<-'low f0'
mediumf0$utt<-'medium f0'
highf0$utt<-'high f0'
histogram<-rbind(lowf0,mediumf0,highf0)
ggplot(histogram, aes(f0, fill = utt)) + geom_histogram(alpha = 0.2)
Réponses:
Votre code actuel:
indique
ggplot
de construire un histogramme en utilisant toutes les valeurs def0
, puis de colorier les barres de cet histogramme unique en fonction de la variableutt
.Ce que vous voulez à la place est de créer trois histogrammes séparés, avec un mélange alpha afin qu'ils soient visibles les uns à travers les autres. Vous souhaitez donc probablement utiliser trois appels distincts à
geom_histogram
, où chacun obtient sa propre trame de données et se remplit:Voici un exemple concret avec une sortie:
qui produit quelque chose comme ceci:
Édité pour corriger les fautes de frappe; vous vouliez un remplissage, pas une couleur.
la source
scale_fill_manual()
.En utilisant les exemples de données de @ joran,
notez que la position par défaut de
geom_histogram
est "pile".voir "réglage de la position" de cette page:
docs.ggplot2.org/current/geom_histogram.html
la source
position = 'identity'
n'est pas seulement une réponse plus lisible, elle se gélifie mieux avec des tracés plus compliqués, tels que des appels mixtes àaes()
etaes_string()
.scale_fill_manual()
. Cette fonction peut également être utilisée pour modifier les couleurs dans les histogrammes.fill
est un facteur.Alors que seules quelques lignes sont nécessaires pour tracer des histogrammes multiples / superposés dans ggplot2, les résultats ne sont pas toujours satisfaisants. Il faut utiliser correctement les bordures et la coloration pour s'assurer que l'œil peut différencier les histogrammes .
Les fonctions suivantes équilibrent les couleurs de bordure, les opacités et les graphiques de densité superposés pour permettre au spectateur de différencier les distributions .
Histogramme unique :
Histogramme multiple :
Utilisation :
Passez simplement votre bloc de données dans les fonctions ci-dessus avec les arguments souhaités:
Le paramètre supplémentaire dans plot_multi_histogram est le nom de la colonne contenant les étiquettes de catégorie.
Nous pouvons voir cela de manière plus spectaculaire en créant un dataframe avec de nombreux moyens de distribution différents :
Passer le bloc de données comme avant (et élargir le graphique à l'aide d'options):
la source