2017-10-10 4 views
0

Contexte: Je souhaite comparer graphiquement l'évolution de la charge de travail et la confiance dans le temps au cours d'une expérience. Le temps est représenté par 2 blocs.Empilez différentes variables sur le graphique en utilisant stat_summary (ggplot)

Édition: J'essaie de tracer différentes variables avec différentes unités sur le même graphique pour comparer l'évolution. J'ai seulement trouvé que cela fonctionne avec geom_line, mais ce n'est pas le cas pour stat_summary.

Données: x est "Bloc" (2 blocs) représentant le temps. Les variables utilisées pour y sont "Workload" et "Trust" (toutes deux de 1 à 5, obtenues en demandant au sujet). Pour donner quelques données:

data = data.frame("Subject" = c(1,1,2,2,3,3), "Block" = c(1,2,1,2,1,2), "Workload" = c(1,5,2,4,3,3), "Trust" = c(4,1,3,2,2,1)) 

J'ai essayé, cela fonctionne:

ggplot(data, aes(Block)) + geom_line(aes(y = Trust)) + geom_line(aes(y = Workload)) 

Cependant, il ne produit pas un résultat convaincant: depuis que j'ai plusieurs points, il les relie pour chaque valeur afin J'obtiens seulement des traits verticaux. Et c'est tout à fait normal compte tenu de ce que geom_line est censé faire. donc je peux encore calculer la moyenne pour chaque bloc et chaque variable, mais je me demandais s'il est possible d'obtenir un résultat direct avec stat_summary, en utilisant quelque chose comme:

ggplot(data, aes(Block)) + stat_summary(fun.y = mean, geom = line, aes(y = Trust)) + stat_summary(fun.y = mean, geom = line, aes(y = Workload)) 

Merci pour tous ceux qui dédie même un peu de leur temps à essayer de répondre à cela.

Passez une bonne journée!

Pyxel

+0

Il vous manque des guillemets autour de la 'geom'. Essayez 'geom =" line "'. – aosmith

+0

Merci d'avoir signalé cela. Cependant, ce n'est que lorsque j'ai écrit ce post, que j'ai mis les citations dans R. – Pyxel

+0

Le code (en utilisant "ligne") fonctionne bien pour moi. Le résultat n'est-il pas ce que vous cherchez ou avez-vous une erreur ou ...? – aosmith

Répondre

0

Je vous recommande de résumer vos données avant de tracer. Considérez ici:

library(tidyverse) 
df <- data_frame("Subject" = c(1,1,2,2,3,3), 
       "Block" = c(1,2,1,2,1,2), 
       "Workload" = c(1,5,2,4,3,3), 
       "Trust" = c(4,1,3,2,2,1)) 
grouped <- 
    df %>% 
    group_by(Block) %>% 
    summarise(trust = mean(Trust), 
      workload = mean(Workload)) 

ggplot(grouped, aes(x = Block)) + 
    geom_line(aes(y = trust)) + 
    geom_line(aes(y = workload)) 

+0

Merci pour cette réponse. En effet, c'est une possibilité. Cependant, comme je l'ai dit dans le message original, cela ne me satisfait pas complètement, en partie parce que, avec cela, je ne peux pas tracer les barres d'erreur puisque je n'ai que la valeur moyenne. – Pyxel

+0

Vous pouvez également calculer votre erreur standard directement en appelant 'summarise' ci-dessus plutôt que d'utiliser' stat.summary' – zlipp

+0

Merci de m'avoir signalé cela, je vais essayer tout de suite =) – Pyxel