我正在努力创造一个美好的传奇。它应该包含希腊字母 mu,我可以使用表达式、一些文字(即“:”和“mm”)以及使用 formatC 格式化的模型系数来完成此操作。
我运行没有问题的是要么没有希腊字母,然后我可以使用简单的粘贴命令
leg.txt <- c("Number of Points:"
,formatC(length(dist),big.mark=" ")
,"Normal distribution"
,paste(mu,":",formatC(fit$estimate[1], digits = 3,format = "f"),"mm")
,paste(expression(sigma),":",formatC(fit$estimate[2], digits = 3,format = "f"),"mm")
,"Density plot"
,paste(expression(bar(x)),":",formatC(mean, digits = 3,format = "f"),"mm")
,paste("SD:",formatC(sd, digits = 3,format = "f"),"mm")
)
legend("topleft", leg.txt
,col= c("white","white","blue","white","white","red","white","white")
,bty = "n"
,lwd = c(2,2)
)
这会导致类似的事情
(因信誉问题不能发图片)
微米:0.283毫米
但可以看出,没有包含希腊字母。切换到类似的东西
leg.txt <- c("Number of Points:"
,formatC(length(dist),big.mark=" ")
,"Normal distribution"
,eval(substitute(expression(paste(mu, ":" , c, "mm"),list(c=(formatC(fit$estimate[1], digits = 3,format = "f"))))))
,paste(expression(sigma),":",formatC(fit$estimate[2], digits = 3,format = "f"),"mm")
,"Density plot"
,paste(expression(bar(x)),":",formatC(mean, digits = 3,format = "f"),"mm")
,paste("SD:",formatC(sd, digits = 3,format = "f"),"mm")
)digits = 3,format = "f"))))))
导致
坐标:坐标
(formatC($(拟合,估计)_1,3,f))
我有一个问题,经过 2 小时的研究,我无法使 mu 显示为希腊表达式,或者如果我这样做,则不会评估 formatC() ,它将像文字一样发布,而不是给出一个格式化的数字。
使用了其他帖子中的所有提示,例如 bquote 等,但无法使其运行。
编辑了一些“更可运行”的示例。
这是不运行的代码:
x <- seq(1,100,1)
y <- runif(100)
y2 <- x + y
fit <- lm(y2~x)
plot(x,y2)
abline(fit, col = "red",lwd = 2)
mu2 <- formatC(fit$coefficients[1], digits = 3,format = "f")
sigma2 <- formatC(fit$coefficients[2], digits = 3,format = "f")
mean <- mean(y2)
sd <- sd(y2)
leg.txt <- c("Number of Points:"
,formatC(length(dist),big.mark=" ")
,"Normal distribution"
,bquote(mu ~ ":" ~ .(mu2) ~ "mm")
,bquote(sigma ~ ":" ~ .(sigma2) ~ "mm")
,"Density plot"
,paste(expression(bar(x)),":",formatC(mean, digits = 3,format = "f"),"mm")
,paste("SD:",formatC(sd, digits = 3,format = "f"),"mm")
)
legend("topleft", leg.txt
,col= c("white","white","blue","white","white","red","white","white")
,bty = "n"
,lwd = c(2,2)
)
当我第二次使用 bquote 时出现问题。
运行的是
x <- seq(1,100,1)
y <- runif(100)
y2 <- x + y
fit <- lm(y2~x)
plot(x,y2)
abline(fit, col = "red",lwd = 2)
mu2 <- formatC(fit$coefficients[1], digits = 3,format = "f")
sigma2 <- formatC(fit$coefficients[2], digits = 3,format = "f")
mean <- mean(y2)
sd <- sd(y2)
leg.txt <- c("Number of Points:"
,formatC(length(dist),big.mark=" ")
,"Normal distribution"
,bquote(mu ~ ":" ~ .(mu2) ~ "mm")
,expression(paste(sigma,":",eval(formatC(fit$estimate[2], digits = 3,format = "f"))),"mm")
,"Density plot"
,paste(expression(bar(x)),":",formatC(mean, digits = 3,format = "f"),"mm")
,paste("SD:",formatC(sd, digits = 3,format = "f"),"mm")
)
legend("topleft", leg.txt
,col= c("white","white","blue","white","white","red","white","white")
,bty = "n"
,lwd = c(2,2)
)
我仍然认为 bquote 是正确的选择。在我的真实数据中,我正在拟合正态分布,但这应该不重要。
我使用 bquote 两次得到的错误是:
缺少参数图例,没有默认值(从德语错误消息翻译而来,但似乎是正确的。图例对象没有得到 txt,尽管它在我的工作区中。
现在最终有效的解决方案是:
x <- seq(1,100,1)
y <- runif(100)
y2 <- x + y
fit <- lm(y2~x)
plot(x,y2)
abline(fit, col = "red",lwd = 2)
mu2 <- formatC(fit$coefficients[1], digits = 3,format = "f")
sigma2 <- formatC(fit$coefficients[2], digits = 3,format = "f")
mean <- mean(y2)
sd <- sd(y2)
leg.txt <- c("Number of Points:"
,formatC(length(dist),big.mark=" ")
,"Normal distribution"
,as.expression(bquote(mu ~ ":" ~ .(mu2) ~ "mm"))
,as.expression(bquote(sigma ~ ":" ~ .(sigma2) ~ "mm"))
)
legend("topleft", leg.txt
,col= c("white","white","blue","white","white","red","white","white")
,bty = "n"
,lwd = c(2,2)
)