如何在ggplot2绘图的副标题中添加R-squared值?
当然可以直接修改代码把R-squared值添加到副标题里,你只需要先计算线性回归模型的R²,再把它格式化后放到labs()的subtitle参数里就行。
修改后的完整代码(提前计算R²,逻辑更清晰)
library(ggplot2) set.seed(123) n <- 100 x <- rnorm(n, mean = 50, sd = 10) y <- 2 + 0.5 * x + rnorm(n, mean = 0, sd = 15) sim_data <- data.frame(x = x, y = y) # 计算线性回归模型的R²值 r_squared <- summary(lm(y ~ x, data = sim_data))$r.squared ggplot(sim_data, aes(x = x, y = y)) + geom_point(color = "steelblue", alpha = 0.7, size = 3) + geom_smooth(method = "lm", color = "darkred", size = 1) + theme_minimal() + labs( title = "Scatterplot with Regression Line and Confidence Interval", subtitle = paste0("R² = ", round(r_squared, 3)), # 添加带R²的副标题 x = "X Variable", y = "Y Variable" ) + theme( plot.title = element_text(face = "bold", size = 14), axis.title = element_text(face = "bold"), plot.subtitle = element_text(face = "italic") # 可选:给副标题添加样式 )
紧凑版(直接嵌入计算逻辑)
如果不想单独提前计算R²,也可以把计算逻辑直接写到subtitle参数里,代码会更简洁:
ggplot(sim_data, aes(x = x, y = y)) + geom_point(color = "steelblue", alpha = 0.7, size = 3) + geom_smooth(method = "lm", color = "darkred", size = 1) + theme_minimal() + labs( title = "Scatterplot with Regression Line and Confidence Interval", subtitle = paste0("R² = ", round(summary(lm(y ~ x, data = sim_data))$r.squared, 3)), x = "X Variable", y = "Y Variable" ) + theme( plot.title = element_text(face = "bold", size = 14), axis.title = element_text(face = "bold") )
两种方式都能实现需求,前者逻辑更直观,后者代码更紧凑,可根据习惯选择。
内容的提问来源于stack exchange,提问作者stats_noob
相关产品推荐
相关产品推荐

