Подгоните абстракцию к данным - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть 50 точек данных температуры и влажности, которые я хотел бы нанести на точку geom_point и добавить линейную модель к своему ggplot.однако я не могу этого сделать.Я пробовал abline, geom_line, geom_smooth и lm.

temp_humidity_data <- dplyr::select(data, temperature:humidity)

lm(formula = humidity ~ temperature, data = temp_humidity_data)

ggplot(temp_humidity_data) +
geom_point(aes (x = temperature , y = humidity))
geom_smooth()

Как мне добавить lm к моему `ggplot?любая помощь приветствуется.благодарю вас.И как я могу дифференцировать точки температуры и влажности по цвету на графике?

enter image description here

это то, что у меня сейчас ^

1 Ответ

0 голосов
/ 22 февраля 2019

Как уже упоминалось в разделе комментариев, вы пропустили знак + после 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)

Вывод:

enter image description here

Чтобы ответить на второй вопрос ОП "Как я могу дифференцировать точки температуры и влажности по цвету какхорошо на участке? ", мы можем добавить 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)

Вывод:

enter image description here

Чтобы изменить диапазон размеров и цветов, мы используем 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 («символ построения круга»), чтобы обернуть каждую точку.Это дает хорошую границу, разделяющую каждую точку.

Вывод:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...