Je contiennent des données discrètes qui ressemble à ceci:Comment utiliser sec_axis() pour des données discrètes dans ggplot2 R?
height <- c(1,2,3,4,5,6,7,8)
weight <- c(100,200,300,400,500,600,700,800)
person <- c("Jack","Jim","Jill","Tess","Jack","Jim","Jill","Tess")
set <- c(1,1,1,1,2,2,2,2)
dat <- data.frame(set,person,height,weight)
Je suis en train de tracer un graphique avec la même axe x (personne) et 2 différents axes y (poids et taille). Tous les exemples, je trouve est d'essayer de tracer le secondary axis (sec_axis), ou des données discrètes en utilisant des graphiques de base. Existe-t-il un moyen facile d'utiliser sec_axis pour des données discrètes sur ggplot2? Edit: Quelqu'un dans les commentaires a suggéré que j'essaie la réponse suggérée. Cependant, je lance dans cette erreur maintenant
Voici mon code actuel:
p1 <- ggplot(data = dat, aes(x = person, y = weight)) +
geom_point(color = "red") + facet_wrap(~set, scales="free")
p2 <- p1 + scale_y_continuous("height",sec_axis(~.*1.2, name="height"))
p2
I get the error: Error in x < range[1] :
comparison (3) is possible only for atomic and list types
Alternativement, maintenant je l'ai modifié l'exemple pour correspondre this example posted.
p <- ggplot(dat, aes(x = person))
p <- p + geom_line(aes(y = height, colour = "Height"))
# adding the relative weight data, transformed to match roughly the range of the height
p <- p + geom_line(aes(y = weight/100, colour = "Weight"))
# now adding the secondary axis, following the example in the help file ?scale_y_continuous
# and, very important, reverting the above transformation
p <- p + scale_y_continuous(sec.axis = sec_axis(~.*100, name = "Relative weight [%]"))
# modifying colours and theme options
p <- p + scale_colour_manual(values = c("blue", "red"))
p <- p + labs(y = "Height [inches]",
x = "Person",
colour = "Parameter")
p <- p + theme(legend.position = c(0.8, 0.9))+ facet_wrap(~set, scales="free")
p
Je reçois une erreur qui dit
"geom_path: Each group consists of only one observation. Do you need to
adjust the group aesthetic?"
Je reçois le modèle, mais aucun point ne se voit
Ce sont des données continues (nombres), non discrètes (catégories). – Brian
J'ai réalisé que j'ai lié la source incorrecte. J'ai lié le bon et mis à jour ma réponse avec l'erreur, si je l'utilise – Ash
Ajoutez 'sec.axis =' devant votre 'sec_axis (...)'. Sans nommer l'argument explicitement, il a par défaut le deuxième argument dans 'scale_y_continuous()', & 'breaks = sec_axis (~. * 1.2, name =" height ")' déclenche cette erreur car cela n'a aucun sens dans le contexte. –