@@ -243,7 +243,7 @@ gg2list <- function(p) {
243
243
# Add ROW and COL to df: needed to link axes to traces; keep df's
244
244
# original ordering while merging.
245
245
df $ order <- seq_len(nrow(df ))
246
- df <- merge(df , gglayout [, c(" PANEL" , " plotly.row" , " COL" )])
246
+ df <- merge(df , gglayout [, c(" PANEL" , " plotly.row" , " plotly.panel " , " COL" )])
247
247
df <- df [order(df $ order ),]
248
248
df $ order <- NULL
249
249
@@ -503,13 +503,14 @@ gg2list <- function(p) {
503
503
# copy [x/y]axis to [x/y]axisN and set domain, range, etc. for each
504
504
xaxis.title <- layout $ xaxis $ title
505
505
yaxis.title <- layout $ yaxis $ title
506
- inner.margin <- 0.01 # between facets
506
+ inner.margin <- 0.02 # between facets
507
507
outer.margin <- 0.05 # to put titles outside of the plots
508
508
orig.xaxis <- layout $ xaxis
509
509
orig.yaxis <- layout $ yaxis
510
510
if (nrow(gglayout ) > 1 ) {
511
- row.size <- 1 . / max(gglayout $ ROW )
512
- col.size <- 1 . / max(gglayout $ COL )
511
+ # TODO: make this a function of the range of space="free"
512
+ row.size <- 1 / max(gglayout $ ROW )
513
+ col.size <- 1 / max(gglayout $ COL )
513
514
npanels <- nrow(gglayout )
514
515
for (i in seq_len(npanels )) {
515
516
row <- gglayout [i , " plotly.row" ]
@@ -521,12 +522,10 @@ gg2list <- function(p) {
521
522
y <- row * row.size
522
523
ymin <- y - row.size
523
524
ymax <- y - inner.margin
524
- # assume grid layout by default where axes are restrict to the exterior
525
- xaxis.name <- if (col == 1 ) " xaxis" else paste0(" xaxis" , col )
526
- yaxis.name <- if (row == 1 ) " yaxis" else paste0(" yaxis" , row )
527
- # anchor needs to be incremented if the corresponding axis is "free"
528
- xanchor <- " y"
529
- yanchor <- " x"
525
+ xaxis.name <- sub(" 1$" , " " , paste0(" xaxis" , panel ))
526
+ yaxis.name <- sub(" 1$" , " " , paste0(" yaxis" , panel ))
527
+ xanchor <- sub(" 1$" , " " , paste0(" y" , panel ))
528
+ yanchor <- sub(" 1$" , " " , paste0(" x" , panel ))
530
529
if (" wrap" %in% class(p $ facet )) {
531
530
# in wrap layout, axes can be drawn on interior (if scales are free)
532
531
# make room for facet strip label
@@ -539,33 +538,28 @@ gg2list <- function(p) {
539
538
}
540
539
# make room for xaxis labels
541
540
if (row == 1 ) {
542
- ymax <- ymax - 0.02
541
+ ymax <- ymax - 0.06
543
542
} else {
544
- ymin <- ymin + 0.02
543
+ ymin <- ymin + 0.06
545
544
}
546
545
if (p $ facet $ free $ y && panel > 1 ) {
547
- # draw a y-axis on each panel
548
- yaxis.name <- paste0(" yaxis" , panel )
549
546
for (j in seq_along(trace.list )) {
550
- tr <- trace.list [[j ]]
551
- if ( tr $ PANEL == panel ) {
552
- trace.list [[ j ]] $ yaxis <- paste0( " y " , panel )
553
- }
547
+ trace.list [[ j ]] $ yaxis <- paste0( " y " , trace.list [[j ]]$ PANEL )
548
+ }
549
+ if ( ! p $ facet $ free $ x ) {
550
+ layout [[paste0( " xaxis " , panel )]] $ showticklabels <- FALSE
554
551
}
555
- yanchor <- if (p $ facet $ free $ x ) paste0(" x" , panel ) else paste0(" x" ,col )
556
552
}
557
553
if (p $ facet $ free $ x && panel > 1 ) {
558
- # draw an x-axis on each panel
559
- xaxis.name <- paste0(" xaxis" , panel )
560
554
for (j in seq_along(trace.list )) {
561
- tr <- trace.list [[j ]]
562
- if ( tr $ PANEL == panel ) {
563
- trace.list [[ j ]] $ xaxis <- paste0( " x " , panel )
564
- }
555
+ trace.list [[ j ]] $ xaxis <- paste0( " x " , trace.list [[j ]]$ PANEL )
556
+ }
557
+ if ( ! p $ facet $ free $ y ) {
558
+ layout [[paste0( " xaxis " , panel )]] $ showticklabels <- FALSE
565
559
}
566
- xanchor <- if (p $ facet $ free $ y ) paste0(" y" , panel ) else paste0(" y" ,row )
567
560
}
568
561
}
562
+ # if (xaxis.name == "xaxis") browser()
569
563
layout [[xaxis.name ]] <- orig.xaxis
570
564
layout [[xaxis.name ]]$ domain <- c(xmin , xmax )
571
565
layout [[xaxis.name ]]$ anchor <- xanchor
0 commit comments