J'essaie de tracer les valeurs médianes de certaines données sur une distribution de densité en utilisant la bibliothèque ggplot2 R. Je voudrais imprimer les valeurs médianes comme texte sur le dessus de la parcelle de densité.valeurs médianes de la courbe au-dessus d'une distribution de densité dans ggplot2
Vous verrez ce que je veux dire par un exemple (en utilisant la trame de données par défaut « diamants »):
J'impression trois itmes: la parcelle de densité elle-même, une ligne verticale montrant la prix médian de chaque coupe, et une étiquette de texte avec cette valeur. Mais, comme vous pouvez le voir, les prix médians se chevauchent sur l'axe "y" (cette esthétique est obligatoire dans la fonction geom_text()).
Est-il possible d'attribuer dynamiquement une valeur "y" à chaque prix médian, afin de les imprimer à différentes hauteurs? Par exemple, à la valeur de densité maximale de chaque "coupe".
Jusqu'à présent, j'ai ce
# input dataframe
dia <- diamonds
# calculate mean values of each numerical variable:
dia_me <- ddply(dia, .(cut), numcolwise(median))
ggplot(dia, aes(x=price, y=..density.., color = cut, fill = cut), legend=TRUE) +
labs(title="diamond price per cut") +
geom_density(alpha = 0.2) +
geom_vline(data=dia_me, aes(xintercept=price, colour=cut),
linetype="dashed", size=0.5) +
scale_x_log10() +
geom_text(data = dia_me, aes(label = price, y=1, x=price))
(j'assignant une valeur constante à l'esthétique y dans la fonction geom_text parce qu'il est obligatoire)
Merci beaucoup à l'avance!
Pourquoi la valeur constante pour y obligatoire? Vous pourriez envisager de créer une position y dans votre dataframe 'dia_me'. – Heroka
Je reçois une erreur me le disant quand je l'omets. Et oui, je suppose que ce serait la solution, mais pour un tracé de densité, les données sont transformées, donc je ne connais pas le moyen d'obtenir la valeur maximale, par exemple. (ce qui serait plus facile dans un histogramme parce que je traçais directement mes valeurs, sans les transformer). – XGrau