Как уже упоминалось в разделе комментариев, вы пропустили знак +
после geom_point
.Кроме того, вам также не хватает нескольких аргументов в geom_smooth
:
library(ggplot2)
ggplot(iris) +
geom_point(aes(x = Petal.Length , y = Petal.Width)) +
geom_smooth(aes(x = Petal.Length, y = Petal.Width),
method = "lm", formula = y ~ x)
Вам необходимо указать "эстетику" для x
и y
, в противном случае вы получите следующую ошибку:
Ошибка: stat_smooth требует следующую отсутствующую эстетику: x, y
method = "lm"
говорит geom_smooth
, что вы хотите использовать метод линейной модели, в то время как formula
указываетМодельная формула для сюжета.Если мы не укажем method
, geom_smooth
по умолчанию будет "loess" (как указано @Lyngbakr) и выдаст предупреждающее сообщение:
geom_smooth()
using method = 'loess'и формула 'y ~ x'
Поскольку мы должны предоставить одинаковую эстетику для geom_point
и geom_smooth
, более удобным способом было бы написать:
ggplot(iris, aes(x = Petal.Length , y = Petal.Width)) +
geom_point() +
geom_smooth(method = "lm", formula = y ~ x)
Вывод:
Чтобы ответить на второй вопрос ОП "Как я могу дифференцировать точки температуры и влажности по цвету какхорошо на участке? ", мы можем добавить color
и size
эстетику к geom_point
, как показано ниже:
ggplot(iris, aes(x = Petal.Length , y = Petal.Width)) +
geom_point(aes(color = Petal.Length, size = Petal.Width)) +
geom_smooth(method = "lm", formula = y ~ x)
Вывод:
Чтобы изменить диапазон размеров и цветов, мы используем scale_fill_continuous
(или scale_color_continuous
для color
) и scale_size_continuous
:
ggplot(iris, aes(x = Petal.Length , y = Petal.Width)) +
geom_point(aes(fill = Petal.Length, size = Petal.Width), pch = 21) +
geom_smooth(method = "lm", formula = y ~ x) +
scale_fill_continuous(low = "red", high = "blue") +
scale_size_continuous(range = c(1, 10))
Обратите внимание, что при увеличении диапазона size
некоторые точки начинают перекрываться друг с другом.Чтобы сделать его менее запутанным, я использовал fill
вместо color
и добавил pch = 21
(«символ построения круга»), чтобы обернуть каждую точку.Это дает хорошую границу, разделяющую каждую точку.
Вывод: