如何修复 stat_poly_eq 中的斜率计算?

问题描述 投票:0回答:1

我使用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(\";\")~~"
    )))

这是输出图:

enter image description here

r ggplot2 stringr ggrepel ggpmisc
1个回答
0
投票

当您想要将显示的系数四舍五入为 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
  )

© www.soinside.com 2019 - 2024. All rights reserved.