【问题标题】:How to remove NA value from the plot with ggplot?如何使用 ggplot 从图中删除 NA 值?
【发布时间】:2016-07-19 16:23:24
【问题描述】:

我有 data.frame A(3 列:x、value 和 SD),其中三列的同一行具有 NA 值。 我用标准差(SD)在ggplot中绘图,代码是:

p <- ggplot(A,aes(x=x,y=value))
p + geom_ribbon(aes(ymin=value-SD,ymax=value+SD),fill = "gray",na.rm=T)+ 
  geom_line(aes(y=value))+
  theme_bw()+ theme(panel.border = element_blank(), panel.grid.major = element_blank(), 
                    panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))

结果是:

我不会绘制 NA 值(在上面的图中用黑线绘制灰色方块),我该怎么做?我需要我的 df A 的绘图子集? 谢谢

【问题讨论】:

    标签: r ggplot2 na


    【解决方案1】:

    首先是一些示例数据

    A = data.frame(x = 1900:2000, value=cumsum(rnorm(101)), SD= 0.5)
    A[50:60, 2:3] = NA
    

    如果我理解你的问题,你或多或少已经有了答案。只需将na.rm 更改为FALSE

    p = ggplot(A,aes(x=x,y=value))
    p + geom_ribbon(aes(ymin=value-SD,ymax=value+SD),fill = "gray",na.rm=FALSE)+ 
      geom_line()+
      theme_bw()+ 
       theme(panel.border = element_blank(), panel.grid.major = element_blank(), 
                        panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))
    

    【讨论】:

      【解决方案2】:

      这里有两个用于绘制间隙的选项:

      # create sample data
      set.seed(1)
      df <- data.frame(x=1:100, y=runif(100),SD=0.1)
      df[45:55, c("x", "y", "SD")] <- NA
      
      # option 1: groupings
      ggplot(df, aes(x, y, group=cumsum(is.na(df$x)))) + geom_ribbon(aes(ymin=y-SD,ymax=y+SD),fill = "gray") + geom_line() 
      
      # options 2: interpolations
      ggplot(df, aes(zoo::na.approx(x), y)) + geom_ribbon(aes(ymin=y-SD,ymax=y+SD),fill = "gray") + geom_line() 
      

      【讨论】:

        猜你喜欢
        • 2021-11-27
        • 1970-01-01
        • 1970-01-01
        • 2020-05-21
        • 2013-06-17
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多