从多面ggplot中提取行数 [英] Extract number of rows from faceted ggplot
本文介绍了从多面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屋!
查看全文