2011-11-17 6 views
0

J'ai un problème de structure. Voici un exemple de ce que je fais.Pourquoi mon graphique est vide?

x <- c(211.50, 200.50, 148.60, 144.20, 132.20, 159.80, 107.70, 91.40, 63.10, 62.10, 55.70, 74.60, 224.90, 208.001, 45.80, 133.50, 122.70, 161.70, 160.00, 136.80, 92.20, 91.20, 79.20, 109.90, 244.60, 212.20, 147.20, 129.30, 118.50, 165.80, 120.60, 97.90, 69.30, 65.50, 59.10, 81.90, 94.15, 114.20, 131.03, 133.89, 132.25, 153.51) 

y <- x 
Ref <- c(rep("ref1",36), rep("ref2",6)) 
ID <- c(rep("id1",6), rep("id2",6),rep("id3",6),rep("id4",6),rep("id5",6),rep("id6",6),rep("id7",6)) 

data.split <- data.frame(Ref,ID,x,y) 
l.ref <- ddply(data.split, .(Ref), "nrow") 
vec1 <- c(rep(1,l.ref$nrow[1])) 
for (i in 2:length(l.ref$Ref)) { 
    vec2 <- c(rep(i,l.ref$nrow[i])) 
    vec3 <- append(vec1,vec2, after =length(vec1)) 
    vec1 <- vec3 
} 
vec_ref <- vec3 

l.id <- ddply(data.split, .(ID), "nrow") 
vec1 <- c(rep(1,l.id$nrow[1])) 
for (i in 2:length(l.id$ID)) { 
vec2 <- c(rep(i,l.id$nrow[i])) 
vec3 <- append(vec1,vec2, after =length(vec1)) 
vec1 <- vec3 
} 
vec_id <- vec3 
df <- structure(list(Ref = structure(vec_ref, .Label = l.ref$Ref, class = "factor"), 
Id = structure(vec_id, .Label = l.id$ID, class = "factor"), 
x = data.split$x, y = data.split$y), 
.Names = c("Ref", "Id", "x", "y"), 
row.names = c(NA, -length(data.split$x)), class = "data.frame") 

ggplot(data = df, aes(x = x, y = y, colour = df$Ref)) + 
    geom_point(aes(shape = df$Id)) + scale_shape_manual(value=1:length(l.id$ID)) 

messages d'avertissement: 1: dans [<-.factor (*tmp*, is.na (valeurs), valeur = "NA"): niveau de facteur invalide, AN générés 2: Suppression des 42 lignes contenant des valeurs manquantes (geom_point).

J'ai un graphique vide, je ne comprends pas quel est le problème?

Qu'est-ce que je fais mal?

+2

Je ne peux pas exécuter votre code: "Erreur: objet 'l.ref' non trouvé" – Spacedman

+0

Pourriez-vous s'il vous plaît ad l.ref et l.id à l'exemple? –

+0

Le code ne fonctionne pas pour moi, data.split est créé mais l.ref est un objet inexistant. Vous devez également clarifier ce que vous voulez faire et pourquoi cela implique une structure. À ce stade, votre code semble assez flou. –

Répondre

5

Vous avez modifié vos facteurs dans votre bloc de données. Qu'est-ce que tout ce commerce avec «structure»? Perdez-le, et utilisez ceci:

df = data.frame(Ref = factor(vec_ref,labels=l.ref$Ref), 
     Id = factor(vec_id,labels=l.id$ID), 
     x=data.split$x,y=data.split$y) 

puis le ggplot fonctionne.

+0

oui, merci beaucoup – Tali

+1

Avez-vous une chance de cliquer sur la petite case pour que tout le monde sache que vous avez une réponse? :) – Spacedman