嗨,我有一个问题。 我试图在同一个情节上绘制3条生存曲线。 对于每个情节,我想添加自信的间隔。
为此,我有一个数据框
dput(df)
structure(list(lowerA = c(4.1, 4.6, 5.5, 4.7, 5), Group1 = c(4.8,
5.4, 6.4, 5.5, 5.7), upperA = c(5.7, 6.3, 7.3, 6.3, 6.6), lowerB = c(6.2,
7.1, 8.7, 7.4, 8.2), Group2 = c(7.3, 8.3, 10, 8.6, 9.5), upperB = c(8.6,
9.6, 11.4, 9.9, 10.8), lowerC = c(18.3, 19.5, 24.3, 22.9, 25.5
), Group3 = c(21.4, 22.5, 27.6, 26.3, 29), upperC = c(24.7, 25.8,
31, 29.8, 32.7)), .Names = c("lowerA", "Group1", "upperA", "lowerB",
"Group2", "upperB", "lowerC", "Group3", "upperC"), row.names = c("year1",
"year2", "year3", "year4", "year5"), class = c("tbl_df", "tbl",
"data.frame"))
我试过这个。它有效但不美观。
ya <- rownames(df)
xa <- Group1
z1a <- lowerA
z2a <- upperA
xb <- Group2
z1b <- lowerB
z2b <- upperB
xc <- Group3
z1c <- lowerC
z2c <- upperC
#
plot(ya, xa, ylim = c(0,40))
lines(ya, xa, c)
# now the confidence bands
lines(ya, z1a, lty = "dotted")
lines(ya, z2a, lty = "dotted")
lines(yb, xb, col="green")
# now the confidence bands
lines(yb, z1b, lty = "dotted",col="green")
lines(yb, z2b, lty = "dotted", col="green")
lines(yc, xc, col="red")
# now the confidence bands
lines(yc, z1c, lty = "dotted", col="red")
lines(yc, z2c, lty = "dotted", col="red")
有任何帮助吗?建议?
最佳, 彼得
答案 0 :(得分:1)
你可以这样做:
colnames(df) <- gsub("A","1",colnames(df))
colnames(df) <- gsub("B","2",colnames(df))
colnames(df) <- gsub("C","3",colnames(df))
colors <- c("blue","green","red")
library(scales)
plot(df$Group1, type = "n",ylim = c(0,40))
for(i in 1:3){
lines(df[,paste0("Group",i)], col = colors[i])
polygon(x = c(1:nrow(df),nrow(df):1),
y = c(df[,paste0("lower",i)],rev(df[,paste0("upper",i)])),
col = alpha(colors[i], 0.1),
border = NA)
arrows(x0 = c(1:nrow(df)),
x1 = c(1:nrow(df)),
y0 = df[,paste0("lower",i)],
y1 = df[,paste0("upper",i)],
col = colors[i],
angle = 90,
length = 0.05,
code = 3)
}
legend("topleft", legend = c("A","B","C"),
col = c("blue","green","red"),
lty = 1,
bty = "n")
修改强> 请注意,多边形的颜色是半透明的,置信区间的重叠仍然可见。我在示例中更改了一个值来说明这一点。