使用R中的绘图执行图形时,从系列中跳过零值

时间:2011-11-17 16:37:46

标签: r

enter image description here我有绘制图表的功能。我的价值为零,与NA类似。我不想在计算平均值时包含它。另外,我不想包含在图表中。我们可以给出一些空间,而不是零值。请指教。

    x <- c(579, 0, 581, 610, 830, 828, 592, 651, 596, 596, 591, 581, 587, 594, 604, 606, 447, 434, 445)
    drawGraph <- function(x, y, z) {
    g_range <- range(0,x)
    #is.na(x) <- (x == 0)
    plot(x, type="o", col="blue", ylim=g_range,axes=FALSE, ann=FALSE)
    box()
    axis(1, at=1:length(x), lab=FALSE)
    text(1:length(x), par("usr")[3] - 2, srt=45, adj=1.2, labels=y, xpd=T, cex=0.3)
    scale=round(max(x)/10,digits=0)
    axis(2, las=1, at=scale*0:g_range[2], cex.axis=0.3)
    main_title<-as.expression(z)
    MEANLIMIT <- seq(length=length(x), from=mean(x), by=0)
    ULIMIT <- seq(length=length(x), from=(mean(x)*2.66), by=0)
    LLIMIT <- seq(length=length(x), from=(mean(x)/2.66), by=0)
    lines(MEANLIMIT, type="l", pch=2, lty=2, col="grey")
    lines(ULIMIT, type="l", pch=2, lty=2, col="red")
    lines(LLIMIT, type="l", pch=2, lty=2, col="grey")
    title(main=main_title, col.main="red", font.main=4)
    title(xlab="Build", col.lab=rgb(0,0.5,0))
    title(ylab="MS", col.lab=rgb(0,0.5,0))
    legend("topright", g_range[2], main_title, cex=0.8, col=c("blue"), pch=21, lty=1);
    }

2 个答案:

答案 0 :(得分:1)

我相信你的意思是:

x[x==0]<-NA

在计算均值时,您需要将na.rm=TRUE作为额外参数包含。

答案 1 :(得分:1)

对于可重现的部分代码,首先将缺失值编码为NA

x <- c(579, 0, 581, 610, 830, 828, 592, 651, 596, 596, 591, 581, 587, 594, 604, 606, 447, 434, 445)
x[x==0] <- NA

接下来用未分解的过度绘制的线绘制它,你需要从结果和x轴索引缺失值:

plot(which(!is.na(x)),x[!is.na(x)], type="o", col="blue",axes=FALSE, ann=FALSE)

但是你的例子不是很可重复。你给我们一个x对象和一个还需要y和z对象的函数。有关制作正确可重复示例的说明,请参阅: How to make a great R reproducible example?