[英]Removing unwanted characters from regression line equation
在我使用的R / R-Studio的先前版本中,將回歸公式應用於ggplot時,我會得到一個圖形,其中的回歸方程式正確渲染。 但是,現在我切換到R v3.5.3,在回歸行中得到了更多的字符。 我已經修改了一個先前的問題( 在SEPARATE LINES圖上添加回歸線方程和R2 )作為示例:
library(ggplot2)
set.seed(5)
df <- data.frame(x = c(1:50))
df$y <- df$x + rnorm(50, sd=5)
lm_eqn <- function(df){
m <- lm(y~x, df)
eq <- substitute(italic(hat(y)) == a + b %.% italic(x)*","~~italic(r)^2~"="~r2,
list(a = format(coef(m)[1], digits=3),
b = format(coef(m)[2], digits=3),
r2 = format(summary(m)$r.squared, digits=3)))
as.character(as.expression(eq))}
ggplot(data=df, aes(x=x, y=y))+
geom_smooth(method="lm", se=FALSE, color="black", formula=y~x)+
geom_point()+
geom_text(x=10, y=50, label=lm_eqn(df), parse=TRUE)
我希望回歸線文本是
y ^ =-0.162 + 1.02·x,r²= 0.886
但是,顯示的是
y ^ = c(-0.162)+ c(1.02)·x,r²= 0.886
有沒有辦法刪除上一個ggplot中未顯示的c
和()
,或者這是一個錯誤嗎?
但是,這是一個開始,但是您可以根據需要調整數學文本的格式:
library(ggplot2)
set.seed(5)
df <- data.frame(x = c(1:50))
df$y <- df$x + rnorm(50, sd=5)
mod <- lm(y~x, df)
label <- paste('y = ', round(mod$coefficients[[1]],2), ' + ', round(mod$coefficients[[2]],2),
'x', ', r^2 = ', round(summary(mod)$adj.r.squared,2), sep='')
ggplot(data=df, aes(x=x, y=y))+
geom_smooth(method="lm", se=FALSE, color="black", formula=y~x)+
geom_point()+
geom_text(x=10, y=50, label=label)
謝謝傑克的回答。 我一直希望保持lm_eqn函數的格式為yhat和italic,但是您的回應讓我重新考慮了原始代碼。 在玩了一些之后,我將代碼修改為:
lm_eqn <- function(df){
m <- lm(y~x, df)
eq <- substitute(italic(hat(y)) == a + b %.% italic(x)*","~~italic(r)^2~"="~r2,
list(a = signif(m$coef[[1]], 3),
b = signif(m$coef[[2]], 3),
r2 = signif(summary(m)$r.squared, 3)))
as.character(as.expression(eq))}
因此,從去年開始,有必要在系數周圍包括一組額外的[]。 再次感謝您為我提供解決方案!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.