Как позиционировать R-квадрат и уравнение в режиме Facet?

Я хочу показать линейное уравнение и R-квадрат на каждом графике в фасетном режиме. Это мой код до сих пор.

library("ggplot2")
datos <- read.table("~/Documents/master2/plots/dosis_todos/datos.dat", header=TRUE, quote="\"")
ggplot(datos, aes(x = corriente, y = dosis, colour = cristal)) +    
geom_point() + geom_smooth(method="lm", se=F) + 
facet_wrap(~datos$cristal)

Прочитав в этом ответе о ggpmisc, я попытался

my.formula <- y ~ x
library("ggpmisc")
ggplot(datos, aes(x = corriente, y = dosis, colour = cristal)) +    
geom_point() + 
geom_smooth(method="lm", se=F, formula=my.formula) +
stat_poly_eq(aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")), formula = my.formula, parse = TRUE) +
facet_wrap(~datos$cristal)

Что работает, за исключением того, что положение уравнения уменьшается для каждого графика, пока не исчезнет...

введите описание изображения здесь

Если я сохраню свой сюжет достаточно большим, я смогу увидеть весь свой текст на 9 сюжетах… идущий вниз.

Поэтому я думаю, что вопрос заключается в том, как сохранить фиксированное положение уравнения и информацию R-квадрата?

Спасибо

Ps. Да, я знаю, что N57 имеет только 3 балла:(

Ps. Вот ссылка на мои данные

2 ответа

Решение

@murpholinox Да, вы правы, код в 'ggpmisc' недостаточно умен (пока), чтобы определить, когда значения эстетики, такие как разные цвета, уникальны для каждой панели. Тем не менее, можно вручную позиционировать уравнения, передавая положение в блоках данных параметрам label.y и / или label.x, Итак, есть обходной путь.

library("ggplot2")
library("ggpmisc")
datos <- read.table("datos.dat", header=TRUE, quote="\"")
my.formula <- y ~ x
ggplot(datos, aes(x = corriente, y = dosis, colour = cristal)) +
geom_point() +
geom_smooth(method="lm", se=F, formula=my.formula) +
stat_poly_eq(aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")),
             formula = my.formula, parse = TRUE, label.y = 0.9) +
ylim(0, 1) +
facet_wrap(~datos$cristal)

сюжет

Также возможно передать вектор label.y а также label.x, так что каждое уравнение может быть размещено вручную для каждой панели.

ggplot(datos, aes(x = corriente, y = dosis, colour = cristal)) +
geom_point() +
geom_smooth(method="lm", se=F, formula=my.formula) +
stat_poly_eq(aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")),
             formula = my.formula, parse = TRUE, 
             label.y = c(rep(0.9, 6), rep(0.15, 2), 0.9)) +
ylim(0, 0.95) +
facet_wrap(~datos$cristal)

Благодаря комментарию @aosmith я могу делать то, что хочу.

Код является:

ggplot(datos, aes(corriente, dosis)) +
     geom_point(shape = 21, size = 3) +
     geom_smooth(method="lm", se=F, formula=my.formula) +
     stat_poly_eq(aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")), formula = my.formula, parse = TRUE) +
     facet_wrap(~datos$cristal)
Другие вопросы по тегам