2015-04-23 1 views
1
supprimant

Ce n'est pas un doublon car aucune des méthodes dans ce double putative appliquer ici. Aucun d'eux ne conduit à l'avertissement.Avertissements dans scale_x_datetime

En fait, je suis arrivé ici une réponse de Konrad ci-dessous - utiliser suppressMessages. Dans le lien qui est affirmé comme un doublon possible, ils suggèrent suppressWarnings, ce qui ne fonctionne pas.


Après avoir finalement trouver comment obtenir R pour utiliser mon fuseau horaire sur les correctement (qui se trouve scale_x_datetime dans un poste ici, avant qu'il utilisait mon fuseau horaire local, même si les données avaient le fuseau horaire défini déjà) axe de date ggplot , mais il se plaint maintenant avec un avertissement:

Scale for 'x' is already present. Adding another scale for 'x', which will replace the existing scale. 

Ceci est gênant parce que je dois faire beaucoup, et je ne veux pas prendre l'habitude d'ignorer tous les avertissements. Comment puis-je l'éteindre? J'ai évidemment essayé suppressWarnings (avec et sans impression) et options(warn=-1).

  • Version R-est 3.1.3
  • ggplot2_1.0.1
  • scales_0.2.4

    library(lubridate,quietly=T,warn.conflicts=T) 
    library(ggplot2,quietly=T,warn.conflicts=T) 
    library(scales,quietly=T,warn.conflicts=T) 
    
    
    sclip.time <- ymd_hms("2014-06-16 00:00:00",tz="US/Pacific") 
    eclip.time <- ymd_hms("2014-06-17 23:59:59",tz="US/Pacific") 
    
    sdata.time <- ymd_hms("2014-06-16 00:00:00",tz="US/Pacific") 
    edata.time <- ymd_hms("2014-06-17 23:59:59",tz="US/Pacific") 
    
    
    xdata <- seq(sdata.time,edata.time,length.out=100) 
    xfrac <- seq(0,4*3.1416,length.out=100) 
    ydata <- pmax(0.25,sin(xfrac)) 
    ydata <- sin(xfrac) 
    ddf <- data.frame(x=xdata,y=ydata) 
    
    date_format_tz <- function(format = "%Y-%m-%d", tz = "UTC") { 
        function(x) format(x, format, tz=tz) 
    } 
    
    options(warn=-1) 
    
    suppressWarnings(
    ggplot(ddf) + 
        geom_line(aes(x,y),col="blue") + 
        geom_vline(xintercept=as.numeric(sclip.time),color="darkred") + 
        geom_vline(xintercept=as.numeric(eclip.time),color="darkgreen") + 
        xlim(sclip.time,edata.time) + 
        scale_x_datetime( breaks = date_breaks("1 day"), 
            labels = date_format_tz("%Y-%m-%d %H:%M", tz="US/Pacific")) 
    ) 
    

    enter image description here

+0

Je pense qu'il est le comportement par défaut et ce message peut ne pas être supprimé. –

+0

Ne pas pouvoir supprimer un avertissement? –

+0

Non, ce message spécifique. –

Répondre

6

Vous devez utiliser la combinaison de suppressMessages et print comme dans l'extrait ci-dessous:

suppressMessages(print(
    ggplot(ddf) + 
    geom_line(aes(x,y),col="blue") + 
    geom_vline(xintercept=as.numeric(sclip.time),color="darkred") + 
    geom_vline(xintercept=as.numeric(eclip.time),color="darkgreen") + 
    xlim(sclip.time,edata.time) + 
    scale_x_datetime( breaks = date_breaks("1 day"), 
         labels = date_format_tz("%Y-%m-%d %H:%M", tz="US/Pacific")) 
)) 
+0

essayé, cela n'a pas fonctionné. J'ai essayé à nouveau juste pour ne pas être sûr. Ça n'a toujours pas marché. –

+0

@MikeWise, très étrange j'ai essayé le code et [fonctionne bien] (http://pastebin.com/QhszRDWL). – Konrad

+0

J'ai toujours l'avertissement. J'adorerais savoir comment vous vous en êtes débarrassé. –

1

Une façon que vous pourriez obtenir ce que vous voulez est d'utiliser la fonction « essayer », avec l'option silencieuse = T:

try(silent=T, [R-script]) 

Il est généralement une mauvaise idée de le faire de cette façon, parce que vous devenez aveugle aux erreurs qui peuvent se produire, mais si vous êtes vraiment certain de ce que vous faites ..