从多面ggplot中提取行数 [英] Extract number of rows from faceted ggplot

查看:38
本文介绍了从多面ggplot中提取行数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

考虑多面的ggplot

Consider a faceted ggplot

plotdf <- data.frame(x = 1:21, 
                     y = 3*(1:21)+4, 
                     z = c(rep(1,3), rep(2,3), rep(3,3), rep(4,3), rep(5,3), rep(6,3), rep(7,3)))

p <- ggplot2::ggplot(plotdf) + 
     ggplot2::geom_point(ggplot2::aes(x=x,y=y)) + 
     ggplot2::facet_wrap(~ z)

如何从p中提取行数(或列)?

How to extract the number of rows (or cols) from p?

p $ facet似乎包含相关信息:

p$facet seems to contain relevant info:

p$facet
    <ggproto object: Class FacetWrap, Facet>
        compute_layout: function
        draw_back: function
        draw_front: function
        draw_labels: function
        draw_panels: function
        finish_data: function
        init_scales: function
        map: function
        map_data: function
        params: list
        render_back: function
        render_front: function
        render_panels: function
        setup_data: function
        setup_params: function
        shrink: TRUE
        train: function
        train_positions: function
        train_scales: function
        super:  <ggproto object: Class FacetWrap, Facet>

但是我无法从中提取nrow或ncol.有什么建议吗?

But I can't manage to extract nrow or ncol from it. Any suggestions?

推荐答案

在@Aditya的回答之后,这是(自ggplot 3.1.1起):

Following up on @Aditya's answer, this is (as of ggplot 3.1.1):

library(magrittr)
gg_facet_nrow_ng <- function(p){
 assertive.types::assert_is_any_of(p, 'ggplot')
 p %>%
   ggplot2::ggplot_build() %>%
   magrittr::extract2('layout') %>% 
   magrittr::extract2('layout') %>%
   magrittr::extract2('ROW') %>%
   unique() %>%
   length()
}

这篇关于从多面ggplot中提取行数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆