R语言 ggplot2 scale_x_continuous给出非数字参数错误

shstlldc  于 2023-05-26  发布在  其他
关注(0)|答案(1)|浏览(166)

对于我的生活,我不知道为什么会发生这种情况。简单来说,下面的代码运行良好:

PLOT<-ggsurvplot(
  flysurv,
  data = FlyData,
  size = 1,                 
  palette = c(iwanthue(20)),       
  conf.int = TRUE,          
  legend.labs = c(levels(Gtype)))
  ggtheme = theme_bw()+
  theme(axis.title.x = element_text(size = 15),
        axis.title.y = element_text(size = 12),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        plot.title = element_text(size = 17),
        legend.text = element_text(size = 13),
        legend.title = element_text(size = 14)
        )
PLOT

但是我尝试使用scale_x_continuous重新定义轴刻度,以每24个刻度给予从0到120的x轴刻度。示例:

PLOT + scale_x_continuous(breaks=seq(0,120,24))

这会产生以下错误:

Error in PLOT + scale_x_continuous(breaks = seq(0, 120, 24)) : 
  non-numeric argument to binary operator
In addition: Warning message:
Incompatible methods ("+.ggsurv", "+.gg") for "+"

只是遵循一个指南,他们说“这应该工作”,它没有,我还没有找到一个问题,在StackOverflow适用于这里,除了有人与一个简单的“挂+”错字...很高兴在这里得到额外的提示。就像...我能不能直接把它放到ggplot的主情节代码中,这样它就不会在之后作为这个尴尬的附加组件输入了?从美学上讲,我喜欢整个情节代码被 Package 在相同的括号中......

eit6fx6z

eit6fx6z1#

根据文档,ggsurvplot()返回值不是ggplot对象。虽然有一个$plot属性,我们可以修改它:

library(survival)
library(ggplot2)

fit <- survfit(Surv(time, status) ~ sex, data = lung)
P <- survminer::ggsurvplot(fit, data = lung)

P + scale_x_continuous(breaks=seq(0,1000,101))
#> Warning: Incompatible methods ("+.ggsurv", "+.gg") for "+"
#> Error in P + scale_x_continuous(breaks = seq(0, 1000, 101)): non-numeric argument to binary operator
# ... fails, because P is not a ggplot object:
class(P)
#> [1] "ggsurvplot" "ggsurv"     "list"

# but P$plot is:
class(P$plot)
#> [1] "gg"     "ggplot"

# so we'll add scale_x_continuous() to P$plot instead:
P$plot <- P$plot + scale_x_continuous(breaks=seq(0,1000,101))
#> Scale for x is already present.
#> Adding another scale for x, which will replace the existing scale.

P

创建于2023-05-23带有reprex v2.0.2
(虽然你确实有一个错字,它很整洁地创建了一个新的ggtheme对象,但它并没有导致你看到的错误,我不太同意关闭投票;虽然你应该注意到你没有得到bw主题,仍然有旧的大小为文本和标题)

相关问题