How to suppress warnings when plotting with ggplot

前端 未结 3 927
感动是毒
感动是毒 2020-12-04 17:57

When passing missing values to ggplot, it\'s very kind, and warns us that they are present. This is acceptable in an interactive session, but when writing reports, you do no

3条回答
  •  执念已碎
    2020-12-04 18:21

    You need to suppressWarnings() around the print() call, not the creation of the ggplot() object:

    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> 
    

    It might be easier to assign the final plot to an object and then 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> 
    

    The reason for the behaviour is that the warnings are only generated when the plot is actually drawn, not when the object representing the plot is created. R will auto print during interactive usage, so whilst

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

    doesn't work because, in effect, you are calling print(suppressWarnings(plt)), whereas

    R> suppressWarnings(print(plt))
    R>
    

    does work because suppressWarnings() can capture the warnings arising from the print() call.

提交回复
热议问题