我想在散点图中绘制每个城市的回归线。
数据框如下:
df
City str testscr
19 Los Angeles 22.70402 619.80
31 San Diego 20.60697 624.55
33 Los Angeles 21.53581 625.30
35 San Bernardino 21.19407 626.10
36 Los Angeles 21.86535 626.80
45 Riverside 19.26697 628.75
46 Los Angeles 23.30189 629.80
63 Orange 21.94756 633.15
67 Los Angeles 20.68242 634.05
69 San Diego 21.78650 634.10
72 Los Angeles 21.15289 634.40
76 San Bernardino 18.98373 634.95
86 San Bernardino 19.30676 636.60
87 Riverside 20.89231 636.70
105 San Bernardino 19.75422 639.35
114 Orange 19.62662 640.75
118 San Diego 20.08452 641.45
126 Riverside 22.81818 643.20
128 Los Angeles 21.37363 643.40
146 San Diego 19.79654 645.55
156 Orange 21.04869 646.70
157 Orange 20.17544 646.90
160 San Diego 20.29137 647.25
168 San Diego 17.15328 648.70
169 San Bernardino 22.34977 648.95
170 Orange 22.17007 649.15
191 Orange 23.01438 652.10
200 Riverside 21.03721 653.40
我的方法是:
ggplot(data=df,aes(x=str,y=testscr))+
geom_point()+
geom_smooth(method="lm",se=FALSE)+
facet_grid(. ~City)
有没有更好或更聪明的方法?以及如何向每条回归线添加斜率系数?
答案 0 :(得分:2)
让我们首先处理组,然后回答有关添加标签的第二部分。
如果要按组绘制,则基本上有两个选择。首先,如您所愿,刻面。第二个方法是使用aes(group = City)
或通过另一种美学方法,例如aes(color = City)
对点进行分组。
如果第二种方法生成了一个混乱的图,例如有很多重叠的线,那么最好使用刻面。
使用iris
数据集的几个示例。
首先,按颜色分组:
library(ggplot2)
iris %>%
ggplot(aes(Petal.Length, Sepal.Length)) +
geom_point(aes(color = Species)) +
geom_smooth(method = "lm",
aes(color = Species),
se = FALSE)
按组分组:
iris %>%
ggplot(aes(Petal.Length, Sepal.Length)) +
geom_point(aes(group = Species)) +
geom_smooth(method = "lm",
aes(color = Species),
se = FALSE)
使用构面:
iris %>%
ggplot(aes(Petal.Length, Sepal.Length)) +
geom_point() +
geom_smooth(method = "lm",
se = FALSE) +
facet_wrap(~Species)
要添加诸如系数之类的标签,请查看ggpmisc包。这是使用stat_fit_tb
添加系数的一种方法:
iris %>%
ggplot(aes(Petal.Length, Sepal.Length)) +
geom_point() +
geom_smooth(method = "lm",
se = FALSE) +
facet_wrap(~Species) +
stat_fit_tb(method = "lm",
tb.type = "fit.coefs")