我想在geom_point上绘制50个温度和湿度数据点,并将线性模型添加到我的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()
如何向{ggplot中添加lm
?任何帮助表示赞赏。谢谢。我又如何在图中按颜色区分温度和湿度点?
这是我目前拥有的^
答案 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)
您需要为x
和y
提供“美学”,否则会出现以下错误:
错误:stat_smooth需要以下缺失的美感:x,y
method = "lm"
告诉geom_smooth
您要使用线性模型方法,而formula
指定要绘制的模型公式。如果未指定method
,则geom_smooth
默认为“黄土”(如@Lyngbakr所述),并给出警告消息:
geom_smooth()
使用方法='黄土'和公式'y〜x'
由于我们必须在geom_point
和geom_smooth
中提供相同的美观性,因此更方便的方法是编写:
ggplot(iris, aes(x = Petal.Length , y = Petal.Width)) +
geom_point() +
geom_smooth(method = "lm", formula = y ~ x)
输出:
要回答OP的第二个问题“我如何在图上也通过颜色区分温度和湿度点?”,我们可以将color
和size
的美感添加到{{1} },如下所示:
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
(圆圈的“绘图字符”)以环绕每个点。这提供了一个很好的边框,可以分隔每个点。
输出: