如何使用ggplot从图中删除NA值?
How to remove NA value from the plot with ggplot?
我有 data.frame A
(3 列:x、值和 SD)三列中同一行的 NA 值。
我在 ggplot 中绘制了标准差 (SD),代码是:
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
的 plot 子集?
谢谢
这里有两个绘制间隙的选项:
# 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()
首先是一些示例数据
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"))
我有 data.frame A
(3 列:x、值和 SD)三列中同一行的 NA 值。
我在 ggplot 中绘制了标准差 (SD),代码是:
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
的 plot 子集?
谢谢
这里有两个绘制间隙的选项:
# 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()
首先是一些示例数据
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"))