Установка длины линии тренда в R
Мне удалось создать диаграмму рассеяния с двумя наборами данных на одном графике. Один набор данных имеет ось X, которая находится в диапазоне от 0 до 40 (зеленый), а другая - только от 0 до 15 (красный).
Я использовал этот код для добавления линий тренда к красным и зеленым данным отдельно (используя par(new)).
plot( x1,y1, col="red", axes=FALSE, xlab="",ylab="",ylim= range(0:1), xlim= range(0:40))
f <- function(x1,a,b,d) {(a*x1^2) + (b*x1) + d}
fit <- nls(y1 ~ f(x1,a,b,d), start = c(a=1, b=1, d=1))
co <- coef(fit)
curve(f(x, a=co[1], b=co[2], d=co[3]), add = TRUE, col="red", lwd=1)
Моя проблема в том, что я не могу найти способ остановить красную линию тренда в 15 на оси х. Я "погуглил" вокруг, и, похоже, ничего не подошло к моей проблеме. Много на линии тренда Excel! Я устал добавлять оператор конца =, чтобы соответствовать<- и это тоже не сработало.
Пожалуйста помоги,
Я надеюсь, что я разместил достаточно информации. Заранее спасибо.
2 ответа
Вы можете сделать это в базовой графике с помощью from
а также to
аргументы curve
функция (см. справку для curve
Больше подробностей). Например:
# Your function
f <- function(x1,a,b,d) {(a*x1^2) + (b*x1) + d}
# Plot the function from x=-100 to x=100
curve(f(x, a=-2, b=3, d=0), from=-100, to=100, col="red", lwd=1, lty=1)
# Same curve going from x=-100 to x=0 (and shifted down by 1000 units so it's
# easy to see)
curve(f(x, a=-2, b=3, d=-1000), from=-100, to=0,
add=TRUE, col="blue", lwd=2, lty=1)
Если вы хотите программно установить X-пределы кривой, вы можете сделать что-то вроде этого (при условии, что ваш фрейм данных называется df
и ваша х-переменная называется x
):
curve(f(x, a=-2, b=3, d=0), from=range(df$x)[1], to=range(df$x)[2],
add=TRUE, col="red", lwd=1, lty=1)
Попробуйте использовать ggplot. В следующем примере используются данные mtcars:
library(ggplot2)
ggplot(mtcars, aes(qsec, wt, color=factor(vs)))+geom_point()+ stat_smooth(se=F)