在我的R图上打印文字

时间:2017-12-20 13:46:30

标签: r plot survival-analysis

我很难在R图上打印文字。

我有3个图,对于每个图我想添加一个标签(p值)。 然后,对于允许我绘制曲线的5个值中的每一个,在图形上打印该值。

实际上我想让我的身材看起来如下图(见下文)。

使用我的以下脚本。

有任何帮助吗? 提前致谢, 最好,

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"))

class(df)
df <- as.data.frame(df)

#### Data Base

colnames(df) <- gsub("A","1",colnames(df))
colnames(df) <- gsub("B","2",colnames(df))
colnames(df) <- gsub("C","3",colnames(df))

colors <- c("#000099", "#CC0000", "#808080")
labels <- c("red line", "black line","black line")

#########
lablist<-as.vector(c("2010","2011","2012","2013","2014"))
axis(1, labels = FALSE)

#########

library(scales)
plot(df$Group1, type = "n",ylim = c(0,40),frame.plot = FALSE, main = "", xlab = "", ylab = "Survival at hospital discharge (%)",labels = FALSE)
axis(1, at=1:5, labels=c("2011-2012","2012-2013","2013-2014","2014-2015","2015-2016")) 
axis(2, at=c(0, 10, 20, 30, 40), labels=c("0","10","20","30","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(c("white","white","white"), 0.1),
          # si tu veux garder les couleur des IC le long des courbes mets commande si après:
          # 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)
}

enter image description here

1 个答案:

答案 0 :(得分:1)

以下是获取点标签的示例。我将保留P值标签作为读者的练习。

let webView = WKWebView(frame: view.bounds, configuration: webConfiguration) 

我在plot(df$Group1, type = "n",ylim = c(0,40),frame.plot = FALSE, main = "", xlab = "", ylab = "Survival at hospital discharge (%)", axes = F) axis(1, at=1:5, labels=c("2011-2012","2012-2013","2013-2014","2014-2015","2015-2016")) axis(2, at=c(0, 10, 20, 30, 40)) for(i in 1:3){ lines(df[,paste0("Group",i)], col = colors[i]) 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) points(df[,paste0("Group",i)], col = "white", pch = 15, cex = 2) text(df[,paste0("Group",i)], labels = df[,paste0("Group",i)], col = colors[i], cex = 0.7) } 中设置了axes = F而不是labels = F来摆脱警告,我删除了plot()代码,因为它没有做任何事情。您可能希望进一步调整文本的polygon和点,以使其大小合适。

enter image description here