如何在GGSURVLOT中添加网格而不更改R中的主题?

如何在GGSURVLOT中添加网格而不更改R中的主题?,r,ggplot2,R,Ggplot2,我希望在我的ggsurvplot中添加一个实心浅灰色网格,而不更改ggtheme-相当于ggplot()中的网格(linetype=“solid”) 我的数据 p <- structure(list(Studie = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L),

我希望在我的
ggsurvplot
中添加一个实心浅灰色网格,而不更改ggtheme-相当于ggplot()中的
网格(linetype=“solid”)

我的数据

p <- structure(list(Studie = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L), Age = c(35, 38, 67, 18, 62, 61, 31, 34, 26, 44, 33, 54, 35, 49, 62, 56, 41, 58, 65, 29,63, 63, 51, 56, 44, 45, 47, 67, 56, 54, 41, 78, 53.8, 58.3), WHO = c(1L, 3L, 2L, 2L, 2L, 3L, 2L, 3L, 1L, 2L, 3L, 3L, 3L, 1L, 2L, 1L, 2L, 3L, 3L, 1L, 2L, 1L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 1L), Death = c(0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L), Follow.up.death = c(18,2, 14, 17, 31, 4, 20, 15, 12, 19, 10, 17, 27, 22, 3, 43, 24, 14, 13, 5, 12, 137, 22, 87, 48, 24, 72, 32, 14, 83, 57, 16, 70, 1.9)), .Names = c("Studie", "Age", "WHO", "Death", "Follow.up.death"), class = "data.frame", row.names = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 33L, 35L, 36L, 37L))

p我修改了代码。我在ggtheme中添加了一个新主题

theme <- theme(axis.line = element_line(colour = "black"),
           panel.grid.major = element_line(colour = "grey90"),
           panel.grid.minor = element_line(colour = "grey90"),
           panel.border = element_blank(),
           panel.background = element_blank()) 

j <- ggsurvplot(
  fit,                     
  data = p, 
  #fun="cumhaz",
  risk.table = "abs_pct", #risk.table.col="strata",
  pval = TRUE,      
  pval.coord = c(0, 0.25),
  conf.int = F,         
  legend.labs=c("WHO-I", "WHO-II", "WHO-III"),
  cumevents.title = "Cumulative number of deaths",
  size=c(0.7,0.7,0.7,0.7),                    
  xlim = c(0,35),
  alpha=c(0.8),
  break.x.by = 5,    
  xlab="Time in months",
  ylab="Probability of overall survival",
  ggtheme = theme,             
  risk.table.y.text.col = T,
  risk.table.y.text = TRUE, 
  surv.median.line = "v",
  ylim=c(0,1),
  cumevents=TRUE,
  palette="jco",
  tables.theme = theme,
  surv.scale="percent")

j

theme我修改了代码。我在ggtheme中添加了一个新主题

theme <- theme(axis.line = element_line(colour = "black"),
           panel.grid.major = element_line(colour = "grey90"),
           panel.grid.minor = element_line(colour = "grey90"),
           panel.border = element_blank(),
           panel.background = element_blank()) 

j <- ggsurvplot(
  fit,                     
  data = p, 
  #fun="cumhaz",
  risk.table = "abs_pct", #risk.table.col="strata",
  pval = TRUE,      
  pval.coord = c(0, 0.25),
  conf.int = F,         
  legend.labs=c("WHO-I", "WHO-II", "WHO-III"),
  cumevents.title = "Cumulative number of deaths",
  size=c(0.7,0.7,0.7,0.7),                    
  xlim = c(0,35),
  alpha=c(0.8),
  break.x.by = 5,    
  xlab="Time in months",
  ylab="Probability of overall survival",
  ggtheme = theme,             
  risk.table.y.text.col = T,
  risk.table.y.text = TRUE, 
  surv.median.line = "v",
  ylim=c(0,1),
  cumevents=TRUE,
  palette="jco",
  tables.theme = theme,
  surv.scale="percent")

j
theme我不确定是否有“正确”的方法,因为我不熟悉survminer软件包,但你可以用黑客的方法:

j$plot$theme$panel.grid.major <- element_line(colour="grey90")
j$plot$theme$panel.grid.major我不确定是否有“正确”的方法,因为我不熟悉survminer软件包,但你可以用黑客的方法:

j$plot$theme$panel.grid.major <- element_line(colour="grey90")

j$plot$theme$panel.grid.major否-网格是正确的-但我只希望在精确的y轴和x轴上显示黑色实线,而不是整个绘图周围的正方形。你能做到吗?我也想要桌子上的格子,是的!你能把它也加到桌子上吗?非常感谢你!图表已修改。我只是用tables.theme=theme\u classic()替换tables.theme=theme。不客气!谢谢-非常感谢。不-网格是正确的-但我只想要在确切的y轴和x轴上的黑色实线,而不是整个绘图周围的正方形。你能做到吗?我也想要桌子上的格子,是的!你能把它也加到桌子上吗?非常感谢你!图表已修改。我只是用tables.theme=theme\u classic()替换tables.theme=theme。不客气!谢谢-非常感谢。部分感谢!它也可以添加到表中吗?你能把网格划分成不同于break.x.by的间隔吗?我编辑了答案,将网格也添加到表格中。但是我不知道你把网格划分成不同的间隔是什么意思,你想要多少间隔?谢谢你-非常感谢你的努力,Alex刚刚解决了它。实际上比其他选项更好。部分!它也可以添加到表中吗?你能把网格划分成不同于break.x.by的间隔吗?我编辑了答案,将网格也添加到表格中。但是我不知道你把网格划分成不同的间隔是什么意思,你想要多少间隔?谢谢你-非常感谢你的努力,Alex刚刚解决了这个问题。实际上比其他选择要好。