- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试修改 stat_regline_equation
的方式在用 ggscatter
绘制的图上显示回归线方程来自 R 包 ggpubr
.具体来说,我想显示一致的系数位数,即使某些舍入系数具有尾随零(通常会被删除)也是如此。这是一个例子:
library(tidyverse)
library(ggpubr)
diamonds %>%
filter(color %in% c("E", "H", "I")) %>%
ggscatter(x="carat", y="table", add="reg.line") +
facet_wrap(~color) +
stat_regline_equation(label.y.npc = 'top')
图 I 很好,图 H 删除了一个尾随零,图 E 完全删除了斜率,因为它四舍五入为 1.00。基于一个很好的答案,我得到了 here以及不同的答案here ,我尝试使用 trace(ggpubr:::.stat_lm, edit = TRUE)
修改包代码修改第 13 和 14 行
eq.char <- as.character(signif(polynom::as.polynomial(coefs), 2))
到
eq.char <- as.character(formatC(polynom::as.polynomial(coefs), format = "f", digits = 2))
问题是:如果你传递一个 polynom::polynomial
反对 signif
或 round
,他们返回另一个 polynom::polynomial
对象,但对于 formatC
或 sprintf
他们返回字符:
coefs = diamonds %>%
filter(color=='E') %>%
stats::lm(table~carat, .) %>%
stats::coef()
coefs %>%
polynom::as.polynomial() %>%
formatC(format='f', digits=2) %>%
class() %>%
print()
coefs %>%
polynom::as.polynomial() %>%
signif(digits = 2) %>%
class() %>%
print()
[1] "character"
[1] "polynomial"
因此我尝试使用 formatC
以上不起作用。我猜 polynom::polynomial
类具有 round
的内置方法和 signif
, 而对于 formatC
则没有,所以输出被强制用于后者。我可能会尝试修改 polynom::polynomial
的类定义,但在这个阶段,我觉得必须有一种更简单的方法来获得图表上显示的回归方程的尾随零。我希望这是一个足够普遍的愿望,希望有人有更简单的解决方案,或者至少这个答案可能对我以外的更多人有用。
最佳答案
编辑:此答案仅部分解决了问题。它仍然只显示 56.83 + 1 x
而不是 1.00 x
。我将留下答案,因为其他人可能能够从中构建。
问题的很大一部分是polynom:::print.polynomial
,其中包含:
p <- as.character.polynomial(signif(x, digits = digits), decreasing = decreasing)
由于 as.character.polynomial
,这将永远不会打印尾随零。因此,我们可以创建一个新的 as.character.polynomial
并允许这样做。作为示例,我只是稍微修改了现有代码,您可以进一步调整它:
as.character.polynomial <- function (x, decreasing = FALSE, digits = 2, nsmall = 2) {
p <- format(unclass(x), digits = digits, nsmall = nsmall)
lp <- length(p) - 1
names(p) <- 0:lp
p <- p[as.numeric(p) != 0]
if (length(p) == 0)
return("0")
if (decreasing)
p <- rev(p)
signs <- ifelse(as.numeric(p) < 0, "- ", "+")
signs[1] <- if (signs[1] == "- ") "-" else ""
np <- names(p)
pow <- paste("x^", np, sep = "")
pow[np == "0"] <- ""
pow[np == "1"] <- "x"
stars <- rep.int("*", length(p))
stars[p == "" | pow == ""] <- ""
paste0(signs, p, stars, pow, collapse = " ")
}
例子:
coefs %>%
polynom::as.polynomial() %>%
as.character.polynomial
# [1] "56.83 + 1.00*x
但是,.stat_lm
会将其输出为 italic(y)~`=`~56.83 + 1.00*~italic(x)
,因此它将是用作表达式。我对 ggplot2
不够熟悉,无法弄清楚其余部分,所以我会把它留给其他人。
关于r - 如何强制 'polynom::polynomial' 对象中的尾随零? (特别是从 ggpubr 修改 stat_lm 和 stat_regline_equation 的行为),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67942485/
考虑 this link来自 Bit Twiddling Hacks 网站。为了计算尾随位,使用了以下算法: unsigned int v; // 32-bit word input to
我正在开发一个在输出目录中创建多个文件的 makefile。为了创建这些文件,输出目录需要已经存在,否则文件创建失败。 这是一个演示我遇到的问题的最小示例: .PHONY: default defau
我试图让 TextField 的值以尾随对齐方式显示。 如您所见,值 34.3 以前导对齐方式显示。 我确信我遗漏了一些明显的东西,但我不知道是什么。有什么想法吗? @State private va
我想让我的 StackView 在屏幕上居中,并在每边(左和右)添加一个 20 的填充以获得屏幕边距: 但不考虑左边距: 结果如下: 如何处理右边距?对于其他类型的对象(不是 StackView),我
我们在我们的网站上使用漂亮的网址。几年前我有一个外部技术人员添加反向链接。他做得很好,但在一个案例中,他总是添加一个尾随空格字符的链接。 https://www.example.com/item/it
我正在设计一个带前缀的可变长度整数。 Rust 具有计算前导和尾随 1 和 0 的方法:https://doc.rust-lang.org/std/primitive.u64.html#method.
Passing a lambda to the last parameter In Kotlin, there is a convention that if the last parameter o
我需要正则表达式的帮助来从字符串中去除不需要的字符(在 Java 中)。我用 4 个正则表达式解决了这个问题。替换将被多次调用 [peeks: 50+ times/sec] 它并降低性能。但我认为它肯
如果我用 base64 编码一个由七个字符组成的字符串,例如abcdefg 与网站 https://www.base64encode.org/结果是 YWJjZGVmZw==。尾部的“==”字符被填充
尝试在客户端上使用 sprintf 打印出包含缓冲区的 char[]。最后一个字符是“\0”。这是我的服务器代码: char buffer[MAXDATASIZE]; char res[MAXDATA
我在 angular2 项目中遇到问题,我正在生成一个要通过电子邮件发送给用户的 URL。电子邮件中的 URL 需要包含一个特殊 ID,该 ID 在路由器中传递为: { 路径:somepath/:id
我正在尝试删除所有前导和尾随 在使用 PHP 的字符串中。 举个例子 Hello World This is a message... 我想回去 Hello World This is a mes
我有一个 JSON 输出,我想稍微修改一下: JSON={"type":"global", "elements":[ {"type":"car","model":"bmw", "element
继续阅读 ranges-v3 库,我意识到所有关于模板类型有效表达式的检查都有一个尾部 ", 42"表达式,我想知道这样做的目的是什么。例如: namespace concepts { con
我使用的是最新版本的 Xcode (11 Beta 16) 和 macOS (10.15 Beta 6) 我正在尝试创建两个 View 。从第一个 View ,您应该能够通过尾随导航栏项目导航到第二个
我在使用 SwiftUI 时遇到性能问题 List有大量数据。我创建了一个演示应用程序只是为了展示 500_000 String 的问题s 并显示其中一个的尾随 Action ,CPU 将在几秒钟内达
我正在使用 Blue River 的最新 docker 镜像,运行 docker-compose 启动它并在 Mura CMS 中部署一个站点包。 问题是,当我访问 URL 后面没有正斜杠的页面时,我
我是一名优秀的程序员,十分优秀!