代码之家  ›  专栏  ›  技术社区  ›  drmariod

来自geom_point的奇怪丢失值消息

  •  -3
  • drmariod  · 技术社区  · 6 年前

    我有一个非常奇怪的丢失值消息,这是不可复制的,我也找不到问题。一旦我得到警告,一旦没有,通过计算NAs,我找不到它。

    > ggplot(jnk, aes(x=Experiment, y=Log2Intensity)) + 
    +     geom_boxplot(outlier.shape = NA) +
    +     geom_point(aes(color=imputed), 
    +                position=position_jitter(width=.4), 
    +                alpha=.5) + #scatter dots, fill if imputed
    +     scale_color_manual('Imputed', values = c(`TRUE`='blue', `FALSE`='orange')) +
    +     scale_y_continuous(limits=range_intensities) +
    +     facet_wrap(~ my_label, ncol = 10, nrow=5)
    > ggplot(jnk, aes(x=Experiment, y=Log2Intensity)) + 
    +     geom_boxplot(outlier.shape = NA) +
    +     geom_point(aes(color=imputed), 
    +                position=position_jitter(width=.4), 
    +                alpha=.5) + #scatter dots, fill if imputed
    +     scale_color_manual('Imputed', values = c(`TRUE`='blue', `FALSE`='orange')) +
    +     scale_y_continuous(limits=range_intensities) +
    +     facet_wrap(~ my_label, ncol = 10, nrow=5)
    Warning message:
    Removed 1 rows containing missing values (geom_point). 
    > apply(jnk, 2, function(x) sum(is.na(x)))
         my_label   Protein.IDs    Experiment     replicate       imputed Log2Intensity          page 
                0             0             0             0             0             0             0 
    

    编辑

    range_intensities 正好达到的最大值 jnk$Log2intensity 这会产生这个错误,但并不总是。 我不知道这里的算术有什么问题。

    为了证明这不是一个无稽之谈:

    > range_intensities[2] >= max(jnk$Log2Intensity)
    [1] TRUE
    > range_intensities[1] <= max(jnk$Log2Intensity)
    [1] TRUE
    > range_intensities[2] == max(jnk$Log2Intensity)
    [1] TRUE
    

    我不希望有任何警告。

    1 回复  |  直到 5 年前
        1
  •  3
  •   Roland    6 年前

    问题在于抖动和限制的结合:

    DF <- data.frame(x = 1:3, y = 1:3)
    
    library(ggplot2)
    set.seed(42)
    ggplot(DF, aes(x, y)) +
      geom_point(position = position_jitter(width=.4)) +
      scale_y_continuous(limits = c(0, 3))
    
    set.seed(1)
    ggplot(DF, aes(x, y)) +
      geom_point(position = position_jitter(width=.4)) +
      scale_y_continuous(limits = c(0, 3))
    #Warning message:
    #Removed 1 rows containing missing values (geom_point).