web-dev-qa-db-fra.com

Choisir entre qplot () et ggplot () dans ggplot2

Je commence à utiliser le grand ggplot2 package pour le traçage dans R, et l'une des premières choses que je me demande avant chaque tracé est "eh bien, vais-je utiliser qplot ou ggplot?"

Je comprends que qplot fournit une syntaxe plus simple tandis que ggplot permet un maximum de fonctionnalités et de flexibilité, mais quelle est la fonction que vous utilisez le plus, et avez-vous des cas d'utilisation précis pour chacun? Utilisez-vous principalement qplot et ggplot uniquement pour les tracés complexes, ou utilisez-vous ggplot à chaque fois?

Merci pour vos commentaires !

97
juba

Quant à moi, si les deux qplot et ggplot sont disponibles, le critère dépend si les données sont stockées dans data.frame ou des variables distinctes.

x<-1:10
y<-rnorm(10)

qplot(x,y, geom="line") # I will use this
ggplot(data.frame(x,y), aes(x,y)) + geom_line() # verbose

d <- data.frame(x, y)

qplot(x, y, data=d, geom="line") 
ggplot(d, aes(x,y)) + geom_line() # I will use this

Bien sûr, les tracés plus complexes nécessitent ggplot (), et je stocke généralement les données dans data.frame, donc d'après mon expérience, j'utilise rarement qplot.

Et ça sonne bien de toujours utiliser ggplot (). Alors que qplot enregistre la saisie, vous perdez beaucoup de fonctionnalités.

79
kohske

Je suis nouveau chez R, mais je pensais juste partager ça.

 a <- c(1,2,3)

 b <- c(2,3,4)

 x <- qplot(a,b)

 y <- ggplot(data.frame(a,b), aes(a,b)) +geom_line()

Si je modifie la valeur des variables a et b et que je trace ensuite x, il prendra en compte les valeurs modifiées là où y ne le ferait pas. Ainsi, lors de l'écriture de scripts, il serait bon d'utiliser ggplot comme si vous utilisiez qplot, tous les graphiques seront égaux aux dernières références fournies à qplot.

17
anishek

Je pense que cela dépend de la fréquence et de la finalité de l'utilisation de ggplot2.

J'utilise principalement ggplot2 pour les graphiques dans les publications. Cela signifie que j'ai tendance à avoir besoin des fonctionnalités les plus avancées et donc je n'ai jamais pris la peine d'en savoir plus sur qplot. De plus, comme j'ai environ quatre publications par an, je n'utilise pas suffisamment ggplot2 pour être vraiment à l'aise avec la syntaxe et donc me concentrer sur un seul aspect semble optimal.

Cependant, si vous obtenez de nouveaux ensembles de données chaque semaine, alors vous êtes probablement intéressé à explorer rapidement les ensembles de données et produisant un tracé de bonne qualité. Dans ce cas, apprenez les deux. Vous obtiendrez suffisamment de pratique avec la syntaxe et vous gagnerez (éventuellement) du temps avec qplot.

11
csgillespie

Juba, j'ai découvert que l'on peut utiliser qplot pour la plupart des besoins de base de traçage. C'est suffisamment simple, et les valeurs par défaut tout à fait raisonnables, pour que mes étudiants de premier cycle l'utilisent exclusivement et qu'ils puissent produire d'excellentes parcelles avec une expérience limitée. Et le tracé créé par qplot [p <- qplot (etc)] peut être modifié par n'importe laquelle des commandes complètes fournies par ggplot2, ce qui est pratique (ils sont tous stockés de la même manière, quelle que soit la façon dont ils ont été créés). Donc, personnellement, j'utilise qplot pour presque tout et j'enregistre ggplot pour l'intérieur des fonctions.

8
Bryan Hanson
  • qplot est le choix le plus simple si vous avez affaire à des vecteurs d'entrée
  • ggplot nécessite un data.frame comme structure de données d'entrée.

Lorsque vous voulez produire un histogramme, qplot n'a besoin que du vecteur d'occurrences

#rnorm 
x <- rnorm(10)

#ggplot2 package: qplot
qplot(x, geom="histogram")

#ggplot2: using straight ggplot (requires conversion to data.frame)
ggplot(data.frame(x), aes(x)) + geom_histogram()
5
natbusa

Une autre variante de ma part: j'utilise qplot lorsque je tape directement dans la console, et ggplot lorsque j'écris des scripts. Mais après avoir découvert maintes et maintes fois que je voulais recréer un scénario que j'ai tapé dans la console 15 minutes plus tôt, je les écris presque tous dans un script maintenant - j'utilise donc ggplot presque tout le temps.

(Intéressant de voir la diversité des réponses!)

3
Matt Parker