2010-11-28 34 views
1

Je souhaite tracer des données à partir de différentes trames de données avec ggplot. Cependant, j'ai des problèmes avec des échelles discrètes et continues.Facteurs d'utilisation et variables avec le même type d'échelle - possible?

Disons que nous voulons utiliser ces données:

x <- rnorm(9,5) 
y <- rnorm(9,5) 
f1 <- rep(c("a","b","c"),3) 
df1 <- data.frame(x,y,f1) 
x <- rnorm(9,5) 
y <- rnorm(9,5) 
f2 <- rep(c("d","e","f"),3) 
df2 <- data.frame(x,y,f2) 

Je voudrais montrer les deux trames de données sur une parcelle. DF1 $ f1 et f2 DF1 $ sont tous deux responsables de couleurs des points:

p <- ggplot(df1,aes(x,y)) 
p <- p + geom_point(aes(colour=f1)) 
p <- p + geom_point(data=df2,aes(x,y,colour=f2)) 
p 

Cela fonctionne.

Cependant, quand j'ai ces données:

x <- rnorm(9,5) 
y <- rnorm(9,5) 
f1 <- rep(c("a","b","c"),3) 
df1 <- data.frame(x,y,f1) 
x <- rnorm(9,5) 
y <- rnorm(9,5) 
quan <- rnorm(9,1) 
df2 <- data.frame(x,y,quan) 

cette parcelle ne fonctionne pas:

p <- ggplot(df1,aes(x,y)) 
p <- p + geom_point(aes(colour=f1)) 
p <- p + geom_point(data=df2,aes(x,y,colour=quan)) 
p 

Error: Continuous variable() supplied to discrete scale_hue. 

f1 en tant que facteur, quan est une valeur numérique, et il semble logique qu'ils ne peut pas être utilisé avec la même échelle. Mais comment puis-je définir une échelle séparée pour chaque trame de données? Ou est-ce peut-être pas possible?

J'ai essayé d'utiliser scale_colour_discrete et scale_colour_continuous, mais il semble que seule une des deux échelles peut être utilisée pour un tracé.

+0

Il y a quelques erreurs dans votre exemple de code. f et quan n'existent pas. Sont-ils f1 et f2, respectivement? – kmm

+0

Merci d'avoir signalé cela. J'ai corrigé le code dans la question ... – donodarazao

+0

Pourriez-vous nous montrer ce qu'est "quan"? Il y a toujours une erreur dans le code ci-dessus. Essayez de le copier et de le coller par vous-même. –

Répondre

2

Vous ne pouvez avoir qu'un seul type d'échelle par placette. Dans le premier exemple, l'échelle dans les deux cas est un facteur de sorte que vous ne recevez pas d'erreur. Pour le second exemple, l'un est pour une variable continue (f) et l'autre pour un facteur (quan). Lorsque vous essayez de passer 'quan', ggplot attend une variable continue plutôt qu'un facteur et vous fournit le message d'erreur.

Vous devriez essayer de simplifier en utilisant d'abord rbind(), puis en traçant. Mais assurez-vous que vos données sont formatées de la même manière. Si rbind échoue, il est parce que vous n'êtes pas de passage des trames de données de structure similaire à elle:

df3 <- rbind(df1,df2) 
p <- ggplot(df3, aes(x,y,colour=f) + geom_point() 
+0

Je dois préciser que vous ne pouvez avoir qu'une échelle pour chaque COULEUR et TAILLE par parcelle. –

+0

Merci pour votre réponse et désolé pour ma réponse tardive. J'essayais d'utiliser ggplot pour une cartographie avancée, mais la limitation d'une échelle/intrigue ne permet pas d'aller très loin dans cette direction. Mais de toute façon, je suppose que c'est pourquoi il y a des logiciels SIG spéciaux là-bas ...;) – donodarazao