繁体   English   中英

使用facet()在散点图中绘制多条回归线,并将斜率系数添加到每条线

[英]Plot more than one regression line in a scatterplot using facet() and add the slope coefficient to every line

我想在散点图中绘制每个城市的回归线。

数据框如下所示:

     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)

有没有更好或更聪明的方法? 以及如何将斜率系数添加到每条回归线?

让我们首先处理组,然后回答有关添加标签的第二部分。

如果要按组绘制,则基本上有两个选择。 首先,如您所愿,刻面。 第二个方法是使用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")

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM