Cette image à laquelle vous avez fait référence était pour des courbes de densité, pas des histogrammes.
Si vous avez été en train de lire sur ggplot alors peut-être que la seule chose qui vous manque est de combiner vos deux cadres de données en un seul long.
Donc, commençons par quelque chose comme ce que vous avez, deux ensembles de données séparés et combinez-les.
carrots <- data.frame(length = rnorm(100000, 6, 2))
cukes <- data.frame(length = rnorm(50000, 7, 2.5))
# Maintenant, combinez vos deux dataframes en un seul.
# D'abord ajoutez une nouvelle colonne dans chacun qui sera
# une variable pour identifier d'où elles viennent plus tard.
carrots$veg <- 'carrot'
cukes$veg <- 'cuke'
# et combinez dans votre nouveau cadre de données vegLengths
vegLengths <- rbind(carrots, cukes)
Après cela, ce qui est inutile si vos données sont déjà au format long, vous avez seulement besoin d'une ligne pour faire votre graphique.
ggplot(vegLengths, aes(length, fill = veg)) + geom_density(alpha = 0.2)
Maintenant, si vous vouliez vraiment des histogrammes, ce qui suit fonctionnera. Notez que vous devez changer la position de l'argument par défaut "stack". Vous pourriez passer à côté de cela si vous n'avez pas vraiment une idée de ce à quoi vos données devraient ressembler. Une alpha plus élevée a l'air mieux ici. Notez également que j'ai fait des histogrammes de densité. Il est facile de supprimer le y = ..densité..
pour le ramener aux dénombrements.
ggplot(vegLengths, aes(length, fill = veg)) +
geom_histogram(alpha = 0.5, aes(y = ..densité..), position = 'identity')
Une chose supplémentaire, j'ai commenté sur la question de Dirk que tous les arguments pourraient simplement être dans la commande hist
. On m'a demandé comment cela pourrait être fait. Ce qui suit produit exactement la figure de Dirk.
set.seed(42)
hist(rnorm(500,4), col=rgb(0,0,1,1/4), xlim=c(0,10))
hist(rnorm(500,6), col=rgb(1,0,0,1/4), xlim=c(0,10), add = TRUE)
0 votes
Au fait, quel logiciel envisagez-vous d'utiliser? Pour l'open source, je recommanderais gnuplot.info [gnuplot]. Dans sa documentation, je crois que vous trouverez certaines techniques et scripts d'exemple pour faire ce que vous voulez.
1 votes
Je suis en train d'utiliser R comme l'indique la balise (message édité pour le préciser)
1 votes
Quelqu'un a posté un extrait de code pour le faire dans ce fil : stackoverflow.com/questions/3485456/…