comment supprimer les avertissements lors du traçage avec ggplot

Lorsque vous transmettez des valeurs manquantes à ggplot, c’est très gentil et nous avertit qu’elles sont présentes. Ceci est acceptable dans une session interactive, mais lorsque vous rédigez des rapports, vous ne recevez pas d’avertissements sur les résultats, surtout s’ils sont nombreux. Dans l’exemple ci-dessous, une étiquette est manquante, ce qui produit un avertissement.

library(ggplot2) library(reshape2) mydf <- data.frame( species = sample(c("A", "B"), 100, replace = TRUE), lvl = factor(sample(1:3, 100, replace = TRUE)) ) labs <- melt(with(mydf, table(species, lvl))) names(labs) <- c("species", "lvl", "value") labs[3, "value"] <- NA ggplot(mydf, aes(x = species)) + stat_bin() + geom_text(data = labs, aes(x = species, y = value, label = value, vjust = -0.5)) + facet_wrap(~ lvl) 

entrer la description de l'image ici

Si nous enveloppons suppressWarnings autour de la dernière expression, nous obtenons un résumé du nombre d’avertissements. Par souci d’argument, disons que ce n’est pas acceptable (mais est en effet très honnête et correct). Comment supprimer (complètement) les avertissements lors de l’impression d’un object ggplot2?

Une approche plus ciblée serait d’append na.rm=TRUE à vos appels de tracé. Par exemple:

  ggplot(mydf, aes(x = species)) + stat_bin() + geom_text(data = labs, aes(x = species, y = value, label = value, vjust = -0.5), na.rm=TRUE) + facet_wrap(~ lvl) 

Vous avez besoin de suppressWarnings() autour de l’appel print() , pas de la création de l’object ggplot() :

 R> suppressWarnings(print( + ggplot(mydf, aes(x = species)) + + stat_bin() + + geom_text(data = labs, aes(x = species, y = value, + label = value, vjust = -0.5)) + + facet_wrap(~ lvl))) R> 

Il peut être plus facile d’affecter le tracé final à un object, puis d’ print() .

 plt <- ggplot(mydf, aes(x = species)) + stat_bin() + geom_text(data = labs, aes(x = species, y = value, label = value, vjust = -0.5)) + facet_wrap(~ lvl) R> suppressWarnings(print(plt)) R> 

La raison de ce comportement est que les avertissements ne sont générés que lorsque le tracé est dessiné, et non lorsque l’object représentant le tracé est créé. R imprimera automatiquement lors de l’utilisation interactive, alors que

 R> suppressWarnings(plt) Warning message: Removed 1 rows containing missing values (geom_text). 

ne fonctionne pas car, en effet, vous appelez print(suppressWarnings(plt)) , alors que

 R> suppressWarnings(print(plt)) R> 

ne fonctionne pas car suppressWarnings() peut capturer les avertissements résultant de l’appel print() .

Dans votre question, vous mentionnez l’écriture de rapport, il serait donc préférable de définir le niveau d’alerte global:

 options(warn=-1) 

la valeur par défaut est:

 options(warn=0)