在ggplot中按组映射功能

时间:2019-04-04 11:55:46

标签: r ggplot2

已经使用dplyr::group_by()broom::tidy()在几个组上估计了相同的回归模型。估计值应用于在ggplot中绘制每个组的回归函数。

以下代码适用于基础r curve()

library(tidyverse)

my_tbl <- tibble::tribble(
  ~Col_1, ~Col_2, ~Col_3,
      "A",     "(Intercept)",     30,
      "A",     "x",               10,
      "A",     "x2",              -2,
      "B",     "(Intercept)",     40,
      "B",     "x",               20,
      "B",     "x2",              -1
  )

my_tbl %>%
  split(.$Col_1) %>%
  map( ~curve(.$Col_3[1] + .$Col_3[2] * x + .$Col_3[3] * x^2, 
              1, 
              30, 
              main = paste(.$Col_1[1]), 
              ylab = "y"))

stat_function()my_tbl中找不到参数值。

my_tbl %>% 
  nest(-Col_1) %>% 
  mutate(plot = map(data, ~ggplot(data = data.frame(x = c(1, 30)), 
                                  mapping = aes(x = x)) + 
                             stat_function()))

1 个答案:

答案 0 :(得分:0)

使用nest而不是split(根据基本R方法)是否有任何特殊原因?因为这对于ggplot可以正常工作,并且map逻辑与基本R解决方案的逻辑匹配。

对于nest,由于Col_1列不是嵌套数据的一部分,因此我使用map2而不是map来传递两个{{1} }和dataCol_1

ggplot

plot