适应数据

时间:2019-02-22 16:18:29

标签: r ggplot2 lm

我想在geom_point上绘制50个温度和湿度数据点,并将线性模型添加到我的ggplot中。但是,我无法这样做。我已经尝试过ablinegeom_linegeom_smoothlm

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

如何向{ggplot中添加lm?任何帮助表示赞赏。谢谢。我又如何在图中按颜色区分温度和湿度点?

enter image description here

这是我目前拥有的^

1 个答案:

答案 0 :(得分:1)

如评论部分所述,您在+之后错过了一个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)

您需要为xy提供“美学”,否则会出现以下错误:

  

错误:stat_smooth需要以下缺失的美感:x,y

method = "lm"告诉geom_smooth您要使用线性模型方法,而formula指定要绘制的模型公式。如果未指定method,则geom_smooth默认为“黄土”(如@Lyngbakr所述),并给出警告消息:

  

geom_smooth()使用方法='黄土'和公式'y〜x'

由于我们必须在geom_pointgeom_smooth中提供相同的美观性,因此更方便的方法是编写:

ggplot(iris, aes(x = Petal.Length , y = Petal.Width)) +
  geom_point() +
  geom_smooth(method = "lm", formula = y ~ x)

输出:

enter image description here

要回答OP的第二个问题“我如何在图上也通过颜色区分温度和湿度点?”,我们可以将colorsize的美感添加到{{1} },如下所示:

geom_point

输出:

enter image description here

要更改大小和颜色的范围,我们使用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(圆圈的“绘图字符”)以环绕每个点。这提供了一个很好的边框,可以分隔每个点。

输出:

enter image description here