2010-04-01 5 views
0

C'est étrange - je pense?pour (je en xxx) problème ggplot

library(ggplot2) 
tf <- which(sapply(diamonds, is.factor)) 
diamonds.tf <- diamonds[,tf] 

Jusqu'ici tout va bien. Mais vient ensuite le problème:

pl.f <- ggplot(diamonds.tf, aes(x=diamonds.tf[,i]))+ 
geom_bar()+ 
xlab(names(diamonds.tf[i])) 

for (i in 1:ncol(diamonds.tf)) { 
ggsave(paste("plot.f",i,".png",sep=""), plot=pl.f, height=3.5, width=5.5) 
} 

Cela enregistre les tracés dans mon répertoire de travail - mais avec le mauvais x-label. Je pense que cela est étrange car appeler ggplot produit directement le graphique de droite:

i <- 2 
ggplot(diamonds, aes(x=diamonds[,i]))+geom_bar()+xlab(names(diamonds)[i]) 

Je ne sais pas vraiment comment décrire cela comme un titre approprié - des suggestions quant à un titre de question-plus descriptif est le bienvenu.

Merci à l'avance

+0

avez-vous besoin de 'xlab (noms (diamonds.tf) [i])'? –

+0

Salut Jonathan - J'ai essayé ça hier pour le même effet. Ça marche/ça ne marche pas - la façon samme comme la mienne. Merci pour votre suggestion cependant. – Andreas

Répondre

6

Ce n'est pas étrange - votre pl.f ne prend pas i comme paramètre. En fait, si vous ne définissez pas i, vous ne pouvez même pas exécuter votre code. Je pense que vous voulez quelque chose comme

pl.f <- function(i) 
    ggplot(diamonds.tf, aes(x=diamonds.tf[,i]))+ 
      geom_bar()+xlab(names(diamonds.tf[i])) 

for (i in 1:ncol(diamonds.tf)) { 
    p <- pl.f(i) 
    ggsave(paste("plot.f",i,".png",sep=""), plot=p, height=3.5, width=5.5) 
} 
+0

Cela fonctionne - et je suppose que cela ne fait que montrer que je n'ai pratiquement rien programmé du tout. C'est marrant cependant, parce que mon code original a produit et sauvegardé toutes les bonnes parcelles. Seule la légende n'a pas été produite correctement. Avec votre solution tout fonctionne. – Andreas

+3

Ce n'est pas une bonne façon d'utiliser aes - vous devriez passer le nom de la variable et non le contenu. Je vous recommande d'utiliser 'aes_string (x = noms (df) [i])' – hadley

+0

Je vois que vous donnez ce conseil dans le chapitre 10. Je ne pense pas que je comprends pourquoi - mais peut-être que je vais le grogner comme je commence à utilisez ggplot dans des fonctions plus. Merci – Andreas

Questions connexes