J'ai une question très simple qui me fait me cogner la tête contre le mur.
Je voudrais mettre à l'échelle l'axe des y de mon histogramme pour refléter la proportion (0 à 1) que chaque casier représente, au lieu d'avoir la surface des barres somme à 1, comme en utilisant y = .. densité .. fait, ou ayant la barre la plus élevée égale à 1, comme y = .. ncount .. le fait.
Mon entrée est une liste de noms et de valeurs, formatée comme suit:
name value
A 0.0000354
B 0.00768
C 0.00309
D 0.000123
Une de mes tentatives infructueuses:
library(ggplot2)
mydataframe < read.delim(mydata)
ggplot(mydataframe, aes(x = value)) +
geom_histogram(aes(x=value,y=..density..))
Cela me donne un histogramme avec la zone 1, mais des hauteurs de 2000 et 1000:
et y = .. ncount .. me donne un histogramme avec la barre la plus élevée 1.0, et reste à l'échelle:
mais je voudrais que la première barre ait une hauteur de 0,5 et les deux autres 0,25.
R ne reconnaît pas non plus ces utilisations de scale_y_continuous.
scale_y_continuous(formatter="percent")
scale_y_continuous(labels = percent)
scale_y_continuous(expand=c(1/(nrow(mydataframe)-1),0)
Merci pour toute aide.
Notez que ..ncount..
redimensionne à un maximum de 1,0, tandis que ..count..
est le nombre de bacs non mis à l'échelle.
ggplot(mydataframe, aes(x=value)) +
geom_histogram(aes(y=..count../sum(..count..)))
Qui donne:
Depuis ggplot2 0.9, la plupart des fonctions du formateur ont été déplacées dans le package des échelles, y compris percent_format()
.
library(ggplot2)
library(scales)
mydataframe <- data.frame(name = c("A", "B", "C", "D"),
value = c(0.0000354, 0.00768, 0.00309, 0.000123))
ggplot(mydataframe) +
geom_histogram(aes(x = value, y = ..ncount..)) +
scale_y_continuous(labels = percent_format())
Depuis la dernière et la meilleure version de ggplot2 3.0.0, le format a changé. Vous pouvez maintenant encapsuler la valeur y
dans stat()
plutôt que de jouer avec ..
des trucs.
ggplot(mydataframe, aes(x = value)) +
geom_histogram(aes(y = stat(count / sum(count))))