@@ -465,27 +465,41 @@ gg2list <- function(p, width = NULL, height = NULL,
465465
466466 # panel -> plotly.js axis/anchor info
467467 # (assume a grid layout by default)
468- layout $ layout $ xaxis <- layout $ layout $ COL
469- layout $ layout $ yaxis <- layout $ layout $ ROW
470- layout $ layout $ xanchor <- nRows
471- layout $ layout $ yanchor <- 1
468+ layout $ layout <- dplyr :: mutate(
469+ layout $ layout ,
470+ xaxis = COL ,
471+ yaxis = ROW ,
472+ xanchor = nRows ,
473+ yanchor = 1L
474+ )
472475 if (inherits(plot $ facet , " FacetWrap" )) {
473- if (plot $ facet $ params $ free $ x ) {
474- layout $ layout $ xaxis <- layout $ layout $ PANEL
475- layout $ layout $ xanchor <- layout $ layout $ ROW
476- }
477- if (plot $ facet $ params $ free $ y ) {
478- layout $ layout $ yaxis <- layout $ layout $ PANEL
479- layout $ layout $ yanchor <- layout $ layout $ COL
480- layout $ layout $ xanchor <- nPanels
481- }
482476 if (plot $ facet $ params $ free $ x && plot $ facet $ params $ free $ y ) {
483- layout $ layout $ xaxis <- layout $ layout $ PANEL
484- layout $ layout $ yaxis <- layout $ layout $ PANEL
485- layout $ layout $ xanchor <- layout $ layout $ PANEL
486- layout $ layout $ yanchor <- layout $ layout $ PANEL
477+ layout $ layout <- dplyr :: mutate(
478+ layout $ layout ,
479+ xaxis = PANEL ,
480+ yaxis = PANEL ,
481+ xanchor = PANEL ,
482+ yanchor = PANEL
483+ )
484+ } else if (plot $ facet $ params $ free $ x ) {
485+ layout $ layout <- dplyr :: mutate(
486+ layout $ layout ,
487+ xaxis = PANEL ,
488+ xanchor = ROW
489+ )
490+ } else if (plot $ facet $ params $ free $ y ) {
491+ layout $ layout <- dplyr :: mutate(
492+ layout $ layout ,
493+ yaxis = PANEL ,
494+ yanchor = COL
495+ )
487496 }
497+ # anchor X axis to the lowest plot in its column
498+ layout $ layout <- dplyr :: group_by_(layout $ layout , " xaxis" )
499+ layout $ layout <- dplyr :: mutate(layout $ layout , xanchor = max(as.integer(yaxis )))
488500 }
501+ layout $ layout <- as.data.frame(layout $ layout )
502+
489503 # format the axis/anchor to a format plotly.js respects
490504 layout $ layout $ xaxis <- paste0(" xaxis" , sub(" ^1$" , " " , layout $ layout $ xaxis ))
491505 layout $ layout $ yaxis <- paste0(" yaxis" , sub(" ^1$" , " " , layout $ layout $ yaxis ))
0 commit comments