在我的R图上打印文本

问题描述 投票:1回答:1

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

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

事实上我想让我的数字看起来如下图(见下文)。

使用我的以下脚本。

有帮助吗?在此先感谢,Best,

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

r plot survival-analysis
1个回答
1
投票

这是获取点标签的示例。我会将P值标签留给读者练习。

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代码,因为它没有做任何事情。你可能想要进一步调整文本和点的cex,以便它的大小很好。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.