comment faire pour supprimer les avertissements lors de la représentation avec ggplot
Lors du passage de valeurs manquantes pour ggplot, il est très gentil et nous avertit qu'ils sont présents. Ce qui est acceptable dans une session interactive, mais lors de l'écriture de rapports, vous n'avez pas la sortie d'obtenir encombré avec des avertissements, surtout si il ya beaucoup d'entre eux. L'exemple ci-dessous a une étiquette 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)
Si nous envelopper suppressWarnings
autour de la dernière expression, on obtient un résumé de la façon dont de nombreuses mises en garde, il y avait. Pour les besoins de la discussion, disons que ce n'est pas acceptable (mais il est en effet très honnête et correcte). Comment (complètement) supprimer les avertissements lors de l'impression d'un ggplot2 objet?
- Puisque vous parlez de reporting: vous pouvez supprimer les avertissements de sortie dans knitr.
- Merci @DieterMenne je vais explorer cette option. Comment avez-vous su que j'étais un fan de tricot? 🙂
Vous devez vous connecter pour publier un commentaire.
Plus ciblée, parcelle par parcelle approche serait d'ajouter
na.rm=TRUE
de votre parcelle appels.E. g.:
stat_smooth
cette technique ne fonctionne pas. (bug)Vous devez
suppressWarnings()
autour de laprint()
appel, non pas à la création de laggplot()
objet:Il pourrait être plus facile d'affecter le tracé final à un objet, puis
print()
.La raison pour laquelle le comportement est que les avertissements ne sont générés que lorsque la parcelle est en fait établi, et non pas lorsque l'objet représentant l'intrigue est créé. R automatique d'impression pendant l'utilisation interactive, alors qu'
ne fonctionne pas car, en effet, que vous appelez
print(suppressWarnings(plt))
, alors quefonctionne parce que
suppressWarnings()
pouvez capturer les avertissements découlant de l'print()
appel.print
fonctionne mais pas quand c'est fait de façon implicite par l'appel deggplot
et de ne pas l'affecter à un objet.print(suppressWarnings(plt))
où vous voulezsuppressWarnings(print(plt))
ou j'ai oublié ce que vous vouliez dire?Dans votre question, vous mentionnez la rédaction de rapports, de sorte qu'il pourrait être préférable de définir le mondial niveau d'avertissement:
la valeur par défaut est: