为什么在 ggplot 中使用 theme() 会删除我事先指定的 labs() 命令?

Why does using theme() in ggplot deletes my beforehand specified labs() command?

情况似乎是,只要我在 ggplot2 中调用 theme(),我之前针对同一情节的 labs() 就会得到 deleted/overwritten。我现在冲浪了 5 个小时,但我没有看到解决方案。有谁知道发生这种情况的原因?你会拯救我的一周。

这是我的代码:

#creating variables and store them in new data frame

rel_pred <- fitted(rel)
rel_resid <- residuals(rel)
data1 <- data.frame(rel_resid, rel_pred)`

#plot the data

plot1 <- ggplot(data1, aes(x=rel_pred,y=rel_resid)) + 
geom_point() + 
geom_hline(yintercept=0, colour='red') #so far so good, everything works

plot1 + labs(y="Residuals", x="Fitted Values SF-12 MCS", caption="Figure  
1. Residuals vs. fitted Values Model 1") #when I run this, it perfectly 
adds labels

问题来了:只要我 运行 theme() 里面有任何元素,它就会让我以前的标签消失。

plot1 + theme(panel.background = element_rect(fill='transparent'),
plot.background = element_rect(fill='transparent'),
panel.border = element_blank(),
axis.line = element_line(colour="black", size=1),
axis.title.x = element_text(colour='black',size=6),
axis.title.y = element_text(colour='black', size=6),
plot.caption = element_text('Figure 1. Residuals vs. fitted Values Model   
1')
)

正如 Richard 所说,您忘记了 "update" plot1 作为向原始图添加标签的结果。

这里:

plot1 <- ggplot(data1, aes(x=rel_pred,y=rel_resid)) + 
geom_point() + 
geom_hline(yintercept=0, colour='red') #so far so good, everything works

plot1 + labs(y="Residuals", x="Fitted Values SF-12 MCS", caption="Figure  
1. Residuals vs. fitted Values Model 1") #when I run this, it perfectly 
adds labels

试试看

plot1 <- ggplot(data1, aes(x=rel_pred,y=rel_resid)) + 
geom_point() + 
geom_hline(yintercept=0, colour='red') #so far so good, everything works

plot1 <-  plot1 + labs(y="Residuals", x="Fitted Values SF-12 MCS", caption="Figure  
1. Residuals vs. fitted Values Model 1") # no output now, it will save the result as plot1

然后

plot1 + theme(panel.background = element_rect(fill='transparent'),
plot.background = element_rect(fill='transparent'),
panel.border = element_blank(),
axis.line = element_line(colour="black", size=1),
axis.title.x = element_text(colour='black',size=6),
axis.title.y = element_text(colour='black', size=6),
plot.caption = element_text('Figure 1. Residuals vs. fitted Values Model   
1')
)

将按预期工作