Rパッケージからstat_regline_equation
作成されたプロットに回帰直線方程式を表示する方法を変更しようとしています。具体的には、丸められた係数の末尾にゼロがあり、通常は削除される場合でも、一貫した桁数の係数を表示したいと考えています。次に例を示します。ggscatter
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 では末尾のゼロが 1 つ削除され、グラフ E では勾配が 1.00 に丸められているため、勾配が完全に削除されています。ここで得た素晴らしい回答と別の回答に基づいて、パッケージ コードを変更して、13 行目と 14 行目を変更しようとしました。trace(ggpubr:::.stat_lm, edit = TRUE)
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
ありますが、この段階では、グラフに表示される回帰方程式の末尾のゼロを取得する簡単な方法が必要だと感じています。そして、これが誰かがより簡単な解決策を見つけられるように、または少なくとも私以外の多くの人に役立つ答えが得られるように、これが十分に一般的な欲求であることを願っています.