Вот некоторые примеры данных:
df <- data.frame('x' = c(230890.00, 71023.25, 296.00, 217530.00, 736550.00, 285529.50, 15210.25, 20317.00, 25157.75,
1272.50, 7817.75, 61297.50, 9085.00, 16047.25, 10008.75, 2438.75),
'y' = c(2.030330e-11, 1.016549e-05, 9.308836e-17, 5.587085e-02, 1.122631e+01, 1.104037e-06, 1.609258e-04,
1.653132e-04, 1.849783e-04, 6.611519e-15, 6.096827e-14, 1.197042e-09, 7.425932e-08, 2.398086e-05,
5.677278e-13, 2.704369e-15))
Я хочу построить эти данные в виде точечной диаграммы на оси логарифма с линией, показывающей линейную регрессию, и меткой, показывающей уравнение регрессии и значение R ^ 2.
Для этого у меня есть код:
ggplot(df, aes(x = x, y = y)) +
geom_point() +
geom_smooth(method = 'lm', se = F, col = 'grey', linetype = 'dashed') +
stat_poly_eq(formula = df$y ~ df$x,
aes(label = paste(..eq.label.., ..rr.label.., sep = '*plain(\',\')~')),
parse = T ) +
scale_y_continuous(trans = 'log10',
breaks = trans_breaks('log10', function(x) 10^x),
labels = trans_format('log10', math_format(10^.x))) +
scale_x_continuous(trans = 'log10',
breaks = trans_breaks('log10', function(x) 10^x),
labels = trans_format('log10', math_format(10^.x))) +
annotation_logticks() +
theme(
panel.background = element_blank(),
axis.text = element_text(colour = 'black', size = 11),
axis.line = element_line(colour = 'black'),
axis.ticks = element_line(colour = 'black'),
legend.position = 'none'
)
Что дает мне этот вывод:
Однако, как вы видите, перехват неправильный. Я предполагаю, что это потому, что я не преобразовал лог x и y в формулу stat_poly_eq
, но если я преобразую их log, то они не будут в том же масштабе, что и ось графика (перехват становится -26 ).
Как я могу получить формулу, чтобы показать, что перехват находится в районе 10 ^ -16?