首页 文章

Ggplot子集数据函数和dplyr

提问于
浏览
1

在进行数据分析时,我们经常使用dplyr在特定的 geom 中进一步修改数据帧 . 这允许我们稍后更改ggplot的默认数据帧,并使一切仍然有效 .

template <- ggplot(db, aes(x=time, y=value)) + 
     geom_line(data=function(db){db %>% filter(event=="Bla")}) + 
     geom_ribbon(aes(ymin=low, ymax=up))
ggsave( template, "global.png" )
for(i in unique(db$simulation)) 
     ggsave( template %+% subset(db, simulation==i), paste0(i, ".png")

是否有更好/更短的方法来指定 filter 命令,例如用一些神奇的 .

编辑澄清一些注释:通过使用 geom_line(data = db %>% filter(event=="Bla")) ,我稍后使用 %+% 更改默认数据帧时不会更新该层 . 我的目标是使用geom_ *的 data 参数作为函数 .

1 回答

  • 1

    在阅读 %>% 的文档后,我找到了解决方案:

    使用点占位符作为lhs当点用作lhs时,结果将是一个功能序列,即将整个右侧链依次应用于其输入的函数 . 查看示例 .

    因此,最好的方式来制定上面的例子,并结合上面的建议:

    db <- diamonds
    template <- ggplot(db, aes(x=carat, y=price, color=cut)) + 
      geom_point() +
      geom_smooth(data=. %>% filter(color=="J")) +
      labs(caption="Smooths only for J color")
    ggsave( template, "global.png" )
    db %>% group_by(cut) %>% do(
      ggsave( paste0(.$cut[1], ".png"), plot=template %+% .)
    )
    

相关问题