Geom_violin + geom_error_bar
Geom_violin + geom_error_bar
我对 3 个对象有 500 个估计。我的目标是绘制小提琴图以了解估计值的分布,但同时,我想可视化标准误差(以另一种方式评估)、平均值估计值和真实值。
这是我的:
object1 <- rnorm(500,mean=1,sd=0.1)
object2 <- rnorm(500,mean=2,sd=0.1)
object3 <- rnorm(500,mean=3,sd=0.1)
estimations <- data.frame(object1,object2,object3)
colnames(estimations) <- 1:3
SEframe <- data.frame()
SEframe <- rbind(SEframe,c(1,1,mean(object1),0.1))
SEframe <- rbind(SEframe,c(2,2,mean(object2),0.15))
SEframe <- rbind(SEframe,c(3,3,mean(object3),0.25))
colnames(SEframe) <- c("ID","True.value","Estimated.value","SE")
estMelted <- melt(estimations)
estMelted$variable <- as.factor(estMelted$variable)
p <- ggplot(estMelted, aes(x=variable, y=value)) +
geom_violin()
现在我想在图表上画一条线表示真实值,一条误差线表示估计值和 SE。
我该怎么做?
您始终可以为附加层指定另一个数据集。在这里,我们添加了一个 geom_errorbar 层和一个 geom_point 层,我们将这两个层与 data=SEframe
.
一起使用
p +
geom_errorbar(data=SEframe, aes(x=ID,
ymin=Estimated.value - SE,
ymax=Estimated.value+SE), inherit.aes=F) +
geom_point(data=SEframe, aes(x=ID, y=Estimated.value))
注意inherit.aes=FALSE
的用法。原因如下:默认情况下,geom_errorbar 将从 ggplot()
继承映射,但该映射使用名为 value
的列。即使 geom_errorbar
不需要它(因为它不需要 y
),它仍然会被继承并导致问题。因此,我们指定aes不应该被继承。
我对 3 个对象有 500 个估计。我的目标是绘制小提琴图以了解估计值的分布,但同时,我想可视化标准误差(以另一种方式评估)、平均值估计值和真实值。
这是我的:
object1 <- rnorm(500,mean=1,sd=0.1)
object2 <- rnorm(500,mean=2,sd=0.1)
object3 <- rnorm(500,mean=3,sd=0.1)
estimations <- data.frame(object1,object2,object3)
colnames(estimations) <- 1:3
SEframe <- data.frame()
SEframe <- rbind(SEframe,c(1,1,mean(object1),0.1))
SEframe <- rbind(SEframe,c(2,2,mean(object2),0.15))
SEframe <- rbind(SEframe,c(3,3,mean(object3),0.25))
colnames(SEframe) <- c("ID","True.value","Estimated.value","SE")
estMelted <- melt(estimations)
estMelted$variable <- as.factor(estMelted$variable)
p <- ggplot(estMelted, aes(x=variable, y=value)) +
geom_violin()
现在我想在图表上画一条线表示真实值,一条误差线表示估计值和 SE。
我该怎么做?
您始终可以为附加层指定另一个数据集。在这里,我们添加了一个 geom_errorbar 层和一个 geom_point 层,我们将这两个层与 data=SEframe
.
p +
geom_errorbar(data=SEframe, aes(x=ID,
ymin=Estimated.value - SE,
ymax=Estimated.value+SE), inherit.aes=F) +
geom_point(data=SEframe, aes(x=ID, y=Estimated.value))
注意inherit.aes=FALSE
的用法。原因如下:默认情况下,geom_errorbar 将从 ggplot()
继承映射,但该映射使用名为 value
的列。即使 geom_errorbar
不需要它(因为它不需要 y
),它仍然会被继承并导致问题。因此,我们指定aes不应该被继承。