2

我正在用 R 中的彩色误差线绘制数据。我想在图例中显示“样本误差线”(图中使用的颜色),但是如何?

library("Hmisc")

d1=data.frame(x=c(1,2,3,4,5), meanY=c(1,2,3,4,5), sdY=c(1,1,1,1,1))
d2=data.frame(x=c(1,2,3,4,5), meanY=c(2.1,3.3,4.1,5.2,6.1), sdY=c(1.3,1.2,1.4,1.1,1.2))

plot(1, 1, type="n", xlab="X values", ylab="Y values", xlim=c(1,5), ylim=c(0,7))
with ( data = d1, expr = Hmisc::errbar(x, meanY, meanY+sdY, meanY-sdY, pch=1, cex=.5, cap=.0025, add=T, errbar.col="red") )
with ( data = d2, expr = Hmisc::errbar(x, meanY, meanY+sdY, meanY-sdY, pch=1, cex=.5, cap=.0025, add=T, errbar.col="green") )

legend(x="bottomright", legend=c("d1", "d2"), pch=1, pt.cex=.5)
4

1 回答 1

2

有点手动构建的传奇......

# bind data together to simplify plot code
df <- rbind(d1, d2)

# plot
with(df,
     errbar(x = x + c(rep(0.05, nrow(d1)), rep(-0.05, nrow(d2)), # dodge points to avoid overplotting
            y = meanY,
            yplus = meanY + sdY,
            yminus = meanY - sdY,
            pch = 1, cex = 0.5, cap = .0025,
            errbar.col = rep(c("red", "green"), times = c(nrow(d1), nrow(d2))),
            xlab = "X values", ylab = "Y values",
            xlim = c(1, 5), ylim = c(0, 7)))


# create data for legend
df_legend <- data.frame(x <- c(4.5, 4.5),
                        y <- c(1, 2),
                        sdy <- c(0.3, 0.3))

# add symbols to legend
with(df_legend,
  errbar(x = x,
         y = y,
         yplus = y + sdy,
         yminus = y - sdy,
         pch = 1, cex =.5, cap = .0025,
         errbar.col = c("red", "green"),
         add = TRUE))

# add text to legend
with(df_legend,
     text(x = x + 0.2,
          y = y,
          labels = c("d2", "d1")))

# add box
with(df_legend,
     rect(xleft = x - 0.2,
          ybottom = y[1] - 0.5,
          xright = x + 0.4,
          ytop = y[2] + 0.5))

在此处输入图像描述

于 2013-10-27T16:16:29.047 回答