2017-02-13 3 views
0

en utilisant ces data, je veux tracer simultanément les effets de deux facteurs catégoriques sur une variable multinomiale. Ceci est aussi loin que ai pu aller:tracer l'effet de deux facteurs catégoriques sur une variable multinomiale non ordonnée en R

require(ggplot2) 
df=read.csv("example.csv") 
ggplot(df,aes(x=treatment , y=option, group=morph)) + 
geom_bar(stat = "identity")+ 
scale_colour_brewer(palette="Set1")+ 
ylab("Escape strategy")+ 
xlab("Treatment") 

Je suis après un graphique dans lequel, pour chaque traitement, il y a deux bars, un pour chaque morph, et dans chaque barre, la fréquence de chaque option est présentée comme la couleur ocuppying une longueur proportionnelle de la barre pleine.

Merci d'avance.

Répondre

1

Voici une approche pour l'affichage de diagrammes en barres pour trois variables catégorielles. J'ai ajouté un exemple de jeu de données minimal pour la reproductibilité (basé sur vos données publiées).

# Small example data set. 
dat = read.table(header=TRUE, 
text="option treatment morph 
burrow a c 
hide a c 
hide a c 
hide a c 
run a c 
run a c 
burrow a d 
burrow a d 
burrow a d 
hide a d 
run a d 
run b c 
run b c 
run b c 
burrow b c 
hide b c 
burrow b d 
burrow b d 
hide b d 
run b d") 


library(ggplot2) 

p1 = ggplot(dat, aes(x=morph, fill=option)) + 
    geom_bar(position="fill") + 
    scale_fill_brewer(palette="Set1") + 
    facet_grid(. ~ treatment, labeller=label_both) 

ggsave("bar_plot.png", p1, height=6, width=6, dpi=150) 

enter image description here

+0

C'est génial! Cependant, je ne peux pas changer le nom de la variable de réponse. –

+1

@Aguscamacho, je ne suis pas sûr de comprendre le problème. Vous pouvez toujours ajouter '+ ylab (" Stratégie d'échappement ")' pour changer l'étiquette de l'axe des y. Aussi, peut-être que vous voulez essayer 'geom_bar (position =" stack ")' et 'geom_bar (position =" dodge ")' pour afficher les comptes sur le y-axix (au lieu de fraction). – bdemarest

+0

Je ne peux pas comprendre pourquoi je ne pouvais pas hier et peut aujourd'hui. Merci pour l'autre conseil aussi! –