我使用stat_poly_eq将计算出的线性方程显示在图表上,但显示的结果与实际结果有很大差异。实际坡度不能大于0.5。 谁能帮我纠正这个错误?
这是我的数据:
df<-structure(list(Variety = c("Sultana - MG 000", "ES Pallador - MG I",
"Isidor - MG I", "Santana - MG I/II", "Blancas - MG II", "Ecudor - MG II"
), FTSWt2017 = c(0.54, 0.47, 0.41, 0.18, 0.25, 0.18), FTSWt2021 = c(0.32,
0.27, 0.35, 0.29, 0.22, 0.32)), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -6L))
这是我的代码:
library(ggplot2)
library(ggpmisc)
library(ggrepel)
library(stringr)
library(stats)
ggplot(df, aes(x = FTSWt2017, y = FTSWt2021)) +
geom_point(aes(color = Variety)) +
geom_smooth(method = "lm", formula = 'y ~ x', se=FALSE,color="black") +
geom_abline(intercept = 0, slope = 1, color="gray",
linetype="dashed", size=0.5)+
(
aes(label = paste(
gsub(
'\\.',
"*paste('.')*",
str_replace_all(after_stat(eq.label), "\\.([0-9])[0-9]", "\\.\\1")
),
gsub('\\.', ".", after_stat(rr.label)),
sep = "*plain(\";\")~~"
)))
这是输出图:
当您想要将显示的系数四舍五入为 2 位数字时,我认为最简单的方法是设置
output.type="numeric"
,这将使您可以访问包含系数的 tibble
,这使得更容易实现您想要的结果,而不是操作 plotmath
字符串:
library(ggplot2)
library(ggpmisc)
ggplot(df, aes(x = FTSWt2017, y = FTSWt2021)) +
geom_point(aes(color = Variety)) +
geom_smooth(method = "lm", formula = "y ~ x", se = FALSE, color = "black") +
geom_abline(
intercept = 0, slope = 1, color = "gray",
linetype = "dashed", size = 0.5
) +
stat_poly_eq(
aes(label = after_stat(
paste0(
"italic(y)~`=`~", round(b_0, 2), "+", round(b_1, 2), "*italic(x)",
"*`,`~italic(R)^2~`=`~", round(r.squared, 2)
)
)),
output.type = "numeric",
parse = TRUE
)