@@ -283,77 +283,6 @@ FacetGrid <- ggproto("FacetGrid", Facet,
283283
284284 panels
285285 },
286- map_data = function (data , layout , params ) {
287- if (empty(data )) {
288- return (vec_cbind(data %| W | % NULL , PANEL = integer(0 )))
289- }
290-
291- rows <- params $ rows
292- cols <- params $ cols
293- vars <- c(names(rows ), names(cols ))
294-
295- if (length(vars ) == 0 ) {
296- data $ PANEL <- layout $ PANEL
297- return (data )
298- }
299-
300- layer_layout <- attr(data , " layout" )
301- if (identical(layer_layout , " fixed" )) {
302- n <- vec_size(data )
303- data <- vec_rep(data , nrow(layout ))
304- data $ PANEL <- vec_rep_each(layout $ PANEL , n )
305- return (data )
306- }
307-
308- # Compute faceting values
309- facet_vals <- eval_facets(c(rows , cols ), data , params $ .possible_columns )
310- if (nrow(facet_vals ) == nrow(data )) {
311- # Margins are computed on evaluated faceting values (#1864).
312- facet_vals <- reshape_add_margins(
313- # We add an index column to track data recycling
314- vec_cbind(facet_vals , .index = seq_len(nrow(facet_vals ))),
315- list (intersect(names(rows ), names(facet_vals )),
316- intersect(names(cols ), names(facet_vals ))),
317- params $ margins
318- )
319- # Apply recycling on original data to fit margins
320- # We're using base subsetting here because `data` might have a superclass
321- # that isn't handled well by vctrs::vec_slice
322- data <- data [facet_vals $ .index , , drop = FALSE ]
323- facet_vals $ .index <- NULL
324- }
325-
326- # If any faceting variables are missing, add them in by
327- # duplicating the data
328- missing_facets <- setdiff(vars , names(facet_vals ))
329- if (length(missing_facets ) > 0 ) {
330- to_add <- unique0(layout [missing_facets ])
331-
332- data_rep <- rep.int(seq_len(nrow(data )), nrow(to_add ))
333- facet_rep <- rep(seq_len(nrow(to_add )), each = nrow(data ))
334-
335- data <- unrowname(data [data_rep , , drop = FALSE ])
336- facet_vals <- unrowname(vec_cbind(
337- unrowname(facet_vals [data_rep , , drop = FALSE ]),
338- unrowname(to_add [facet_rep , , drop = FALSE ]))
339- )
340- }
341-
342- # Add PANEL variable
343- if (nrow(facet_vals ) == 0 ) {
344- # Special case of no faceting
345- data $ PANEL <- NO_PANEL
346- } else {
347- facet_vals [] <- lapply(facet_vals [], as_unordered_factor )
348- facet_vals [] <- lapply(facet_vals [], addNA , ifany = TRUE )
349- layout [] <- lapply(layout [], as_unordered_factor )
350-
351- keys <- join_keys(facet_vals , layout , by = vars )
352-
353- data $ PANEL <- layout $ PANEL [match(keys $ x , keys $ y )]
354- }
355- data
356- },
357286
358287 attach_axes = function (table , layout , ranges , coord , theme , params ) {
359288
0 commit comments