使用R中的geom_smooth()或stat_summary()突出显示方差

时间:2015-07-02 11:33:35

标签: r ggplot2 variance

如何使用geom_smooth()函数突出显示我的图形。 。但我无法得到解决方案。

这是我的数据集:

   A1        A2      A3
21.09542  71.06014   0
21.09564  71.06064   1
21.09619  71.06128   1
21.09636  71.06242   2
21.09667  71.06564   0
21.09483  71.06619   3
.....

我计算了A1和A2的方差,并通过ggplot绘制。 下面给出了一段代码:

var.A1 = var(A1)
var.A2 = var(A2)
plt <- ggplot(df4, aes(x = A1, y = A2, colour = A3), pch = 17) +geom_point()
plt + geom_errorbar(aes(x=A1,y=A2, ymin=A2-var.A2, ymax=A2+var.A2),width=0.001)+
geom_errorbarh(aes(xmin=A1-var.A1,xmax=A1+var.A1),height=0.001)

1 个答案:

答案 0 :(得分:0)

我不确定你的问题是什么,但是当我尝试使用你的数据时,似乎没有足够的点来产生更顺畅的问题。所以我产生了更多的积分。

# Generate the original data (I think)
raw <- c(
21.09542,  71.06014,   0,
21.09564,  71.06064,   1,
21.09619,  71.06128,   1,
21.09636,  71.06242,   2,
21.09667,  71.06564,   0,
21.09483,  71.06619,   3)
m <- matrix(raw,6,3,byrow=T)
df4 <- data.frame(m)
names(df4) <- c("A1","A2","A3")
df4$A3 <- as.factor(df4$A3)


# Generate a new data set of 100 points with similar statistics
npts <- 100
na1 <- rnorm(npts,mean(df4$A1),sd(df4$A1))
na2 <- rnorm(npts,mean(df4$A2),sd(df4$A2))
na3 <- sample(0:3,npts,replace=T)
df5 <- data.frame(A1=na1,A2=na2,A3=na3)
df5$A3 <- as.factor(df5$A3)

# now plot it
var.A1 = var(df5$A1)
var.A2 = var(df5$A2)

plt <- ggplot(df5, aes(x = A1, y = A2, colour = A3), pch = 17) +geom_point()  + geom_smooth()
plt + geom_errorbar(aes(x=A1,y=A2, ymin=A2-var.A2, ymax=A2+var.A2),width=0.001)+
  geom_errorbarh(aes(xmin=A1-var.A1,xmax=A1+var.A1),height=0.001) + geom_smooth()

print(plt)

这就是情节的样子。 enter image description here