0

dplyr在下图中,我显示了一组模型中的 $R^2$ 值,这些模型使用和拟合到数据集的子集broom。我想按线连接点,或者像传统的点图一样在每个点上画水平线。我怎样才能做到这一点?

在此处输入图像描述

代码

library(dplyr)
library(ggplot2)
library(gapminder)
library(broom)

# separate models for continents
models <- gapminder %>%
    filter(continent != "Oceania") %>%
    group_by(continent) %>%
    do(mod = lm(lifeExp ~ year + pop + log(gdpPercap), 
                data=.)
      )
models %>% glance(mod)

gg <- 
    models %>%
    glance(mod) %>%
    ggplot(aes(r.squared, reorder(continent, r.squared))) +
        geom_point(size=4) +
        ylab("Continent") 
gg

我尝试添加geom_line(),但无法理解group在这种情况下我如何使用美学

gg + geom_line()
geom_path: Each group consists of only one observation. Do you need to adjust
the group aesthetic?


gg + geom_line(aes(group=continent))

或者,我尝试geom_line()如下,但没有成功:

> gg + geom_hline(yintercept=levels(continent))
Error in levels(continent) : object 'continent' not found
4

1 回答 1

1

这行得通,但我会质疑连接线的使用。一般来说,这样的线条暗示了观察序列的逻辑进展,例如随着时间的推移事件的数量。这些数据中有这样的顺序吗?

gg <- 
  models %>%
  glance(mod) %>%
  mutate(group = 1) %>% 
  ggplot(aes(r.squared, reorder(continent, r.squared), group = group) ) +
  geom_path() + 
  geom_point(size=4) +
  ylab("Continent") 
gg
于 2018-03-26T13:34:39.250 回答