оси шкалы логарифма, приводящие к потере аблиции - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь создать точечную диаграмму с подобранными линейными моделями и логарифмическими осями, но это приводит к исчезновению линий моей модели, и я не могу понять, почему.

Мои данные выглядят так:

  Environment Min_light_reqs  Leaf_lifespan
1 Shade           1.4          3.5  
2 Shade           3.48         0.7  
3 Shade           0.71         3.8 
4 Shade           3.18         1.4  
5 Shade           2.50         2.2  
6 Shade           1.46         2.5  

Код, который я использую, выглядит следующим образом:

shade_lm3 <- lm(Leaf_lifespan ~ Min_light_reqs, data = shade)
gap_lm3 <- lm(Leaf_lifespan ~ Min_light_reqs, data = gap)
plot(d1$Leaf_lifespan ~ d1$Min_light_reqs, log="xy", pch=21, col="black", bg="white",
 xlim=c(0.5, 5), ylim = c(0.5, 10), cex=2, xaxt="n", yaxt="n", cex.lab=1.7)
points(shade$Leaf_lifespan ~ shade$Min_light_reqs, pch=21, col="black",
 bg="black", cex=2)
abline(shade_lm3)
abline(gap_lm3)
axis(1, tick=TRUE, line=0, at=c(0.5, 1, 2, 5), labels=c(0.5, 1, 2, 5))
axis(2, tick=TRUE, line=0, at=c(0.5, 1, 2, 5, 10), labels=c(0.5, 1, 2, 5, 10))

Resulting plot

Если удалить журнал = "xy«Затем появляются модельные линии и сюжеты выглядят идеально.Как сохранить логарифмические оси и грани?

1 Ответ

0 голосов
/ 06 декабря 2018

Линейное соответствие на графике log-log не является прямой линией, поэтому функция аблирования не будет работать с опцией по умолчанию.Вам нужно будет использовать функцию прогнозирования и вручную нарисовать линию на графике или изменить параметры по умолчанию в функции аблайна.

d1<-read.table(header=TRUE, text="Environment Min_light_reqs  Leaf_lifespan
Shade           1.4          3.5  
Shade           3.48         0.7  
Shade           0.71         3.8 
Shade           3.18         1.4  
Shade           2.50         2.2  
Shade           1.46         2.5  ")

shade_lm3 <- lm(Leaf_lifespan ~ Min_light_reqs, data = d1)

#create the prediction dataframe
p<-data.frame(Min_light_reqs=seq(0.1, 5, 0.2))
p$out<-predict(shade_lm3, p )

plot(d1$Leaf_lifespan ~ d1$Min_light_reqs,  log="xy", pch=21, col="black", bg="white",
     xlim=c(0.5, 5), ylim = c(0.5, 10), cex=2, xaxt="n", yaxt="n", cex.lab=1.7)
points(d1$Leaf_lifespan ~ d1$Min_light_reqs, pch=21, col="black",
       bg="black", cex=2)

#abline(shade_lm3) #does not work with log axis
#plot the prediction
lines(x=p$Min_light_reqs, y=p$out)


axis(1, tick=TRUE, line=0, at=c(0.5, 1, 2, 5), labels=c(0.5, 1, 2, 5))
axis(2, tick=TRUE, line=0, at=c(0.5, 1, 2, 5, 10), labels=c(0.5, 1, 2, 5, 10))

Редактировать: Поскольку ось преобразуется,Функция abline имеет опцию untf, установка ее в TRUE также правильно проведет линию.

abline(shade_lm3, untf = TRUE)

enter image description here

...