如何在Facet模式下放置R平方和方程式?

时间:2018-07-10 19:33:21

标签: r ggplot2 ggpmisc

我想在构面模式下的每个图中显示线性方程和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)

在此answer中阅读了有关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)

有点用,除了方程的位置对于每个图都会下降直到消失...

enter image description here

如果我将地块保存得足够大,那么我可以看到9个地块中的所有文本...。

所以我想问题是如何保持方程式和R平方信息的位置固定?

谢谢

Ps。是的,我知道N57只有3分:(

Ps。这是指向我的data

的链接

2 个答案:

答案 0 :(得分:1)

@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)

plot

还可以将向量传递到label.ylabel.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)

enter image description here

答案 1 :(得分:0)

由于@aosmith的评论,我可以做我想做的事情。 enter image description here

代码是:

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)