64 votes

ggplot de qplot ne s'exécute pas sur l'approvisionnement

Imaginons que j'ai 2 fichiers source, le premier nommé example1.r et le second example2.r (donnée ci-dessous).

exemple1.r

plot(1:10,1:10)

exemple2.r

qplot(1:10,1:10)

Quand j'source exemple1.r, le graphe est tracé. Il n'est pas, cependant, quand j'source exemple2.r. Qu'est-ce que la solution ici?

(qplot dans example2.r est ggplot2')

77voto

cbeleites Points 5667

C'est la fameuse FAQ 7.22: Pourquoi ne treillis/trellis graphique ne fonctionne pas?.

Pour la grille de graphiques comme ggplot2 ou de treillis, vous avez besoin d'imprimer les graphiques de l'objet afin de dessine.

De manière interactive sur la ligne de commande ce qui est fait automatiquement. Partout ailleurs (à l'intérieur des fichiers source, boucles, fonctions, Sweave morceaux) vous avez besoin d'imprimer de façon explicite.

print (qplot (1 : 10, 1 : 10))

Alternativement, vous pouvez redéfinir qplot pour l'impression:

qplot <- function (x, y = NULL, z = NULL, ...) {
  p <- ggplot2::qplot (x = x, y = y, z = z, ...)
  print (p)
}

(cela change des étiquettes de l'axe de x et de y).

J'utilise cette approche dans les vignettes où je veux écrire du code exactement comme un utilisateur dans une session interactive serait de type.


Edit je vais laisser la réponse comme il est ci-dessus. Mais notez que cette solution de contournement est à mon humble avis totalement obsolète aujourd'hui (et il a toujours été bon pour un petit paresseux niche uniquement).

  • .R fichiers: sources'option print.eval=TRUE conduira à l'impression comportement de l'évaluation de résultat comme dans l'interactif en ligne de commande.
  • .Rnw fichiers: knitr par défaut émule le comportement de la commande interactive en ligne de wrt. printing. Notez que knitr peut être spécifié comme Sweaving moteur pour le package R vignettes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X