2016-11-26 2 views
0

Je suis en train de faire un histogramme avec l'axe x que l'âge et de l'axe y 0 ou 1 (vrai ou faux)histogramme/ggplot avec x et y et Vrai ou faux

person = c(1:50) 
age = sample(1:5,50,replace=T) 
drunk = sample(0:1,50,replace=T) 
df = data.frame(person,age,drunk) 

#plots that I tried: 
ggplot(df, aes(x = age, y = drunk)) + 
    geom_bar(stat="identity") 

hist(df$age) 

barplot(df$drunk, names.arg=df$age) 

Ces parcelles sont ne travaille pas pour moi. Ce que je suis en train de faire est: l'axe X devrait ressembler à 50 numéros allant de 1-5 et l'axe Y doit être 0 ou 1 (Vrai ou faux)

df$drunk <- as.character(df$drunk) 
df$drunk[df$drunk == "0"] <- "False" 
df$drunk[df$drunk == "1"] <- "True" 

I Tried utilisant le code ci-dessus faire un complot avec, mais ça ne marche pas.

http://i.imgur.com/c2DoEha.png par exemple. Chaque personne a un âge aléatoire dans l'intrigue et sa montre s'il est/était ivre (0 - 1 ou true/false)

+0

Cette partie n'est pas clair pour moi: "l'axe X devrait ressembler à 50 chiffres allant de 1 à 5". Pouvez-vous dessiner une image à la main et la télécharger? –

+0

@KotaMori J'ai ajouté une image et une description – Aanna

Répondre

2

Vous devez:

  1. changement x dans votre aes-person
  2. ajouter à votre factor(drunk) y en aes
  3. ajouter scale_y_discrete à l'étiquette de l'axe y avec VRAI et FAUX au lieu de 1 et de 0.
  4. ajouter scale_x_discrete à modifier l'étiquette de tique person au correspondant age en utilisant une fonction d'assistance en label, et en définissant les limites de la gamme de la variable person en df.

    ggplot(df, aes(x = person, y = factor(drunk))) + 
        geom_bar(stat="identity") + 
        labs(x = "Age", y = "Drunk") + 
        scale_y_discrete(labels = c("FALSE","TRUE")) + 
        scale_x_discrete(limits = seq(min(df$person), max(df$person)), labels = function(x) df[df$person == x,]$age) 
    

enter image description here

+0

Salut, merci! comment devrait-on gérer des centaines de lignes en personne/âge? – Aanna

+0

Cela devrait fonctionner pour n'importe quel nombre de lignes dans 'df', à condition qu'elles soient uniques. –

0

Est-ce que ce travail pour vous

ggplot(df,aes(x=person,y=age,fill=factor(drunk))) + geom_bar(stat='identity') 
+0

Cela fonctionne, mais ce n'est pas ce que je cherche. L'âge devrait être l'axe des x et l'ivrogne (0 ou 1) devrait être l'axe y. J'ai essayé d'éditer le code un peu à ggplot (df, aes (x = âge, y = bourré, fill = bourré)) + geom_bar (stat = 'identity'), mais ça ne marche pas non plus – Aanna