Skip to content

Commit f11482b

Browse files
committed
Merge pull request #433 from ropensci/fix/facet
Fix/facet
2 parents 2650444 + 30bd75f commit f11482b

File tree

5 files changed

+30
-5
lines changed

5 files changed

+30
-5
lines changed

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Package: plotly
22
Title: Create Interactive Web Graphics via Plotly's JavaScript Graphing Library
3-
Version: 2.3.2
3+
Version: 2.3.3
44
Authors@R: c(person("Carson", "Sievert", role = c("aut", "cre"),
55
email = "cpsievert1@gmail.com"),
66
person("Chris", "Parmer", role = c("aut", "cph"),

NEWS

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
2.3.3 -- 27 Jan 2015
2+
3+
Bump axis number for each trace matching a panel number. fixes #318
4+
15
2.3.2 -- 25 Jan 2015
26

37
More accurate list of data_array properties. Fixes #415

R/ggplotly.R

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -546,13 +546,23 @@ gg2list <- function(p) {
546546
if (p$facet$free$y && panel > 1) {
547547
# draw a y-axis on each panel
548548
yaxis.name <- paste0("yaxis", panel)
549-
trace.list[[i]]$yaxis <- paste0("y", panel)
549+
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+
}
554+
}
550555
yanchor <- if (p$facet$free$x) paste0("x", panel) else paste0("x",col)
551556
}
552557
if (p$facet$free$x && panel > 1) {
553558
# draw an x-axis on each panel
554559
xaxis.name <- paste0("xaxis", panel)
555-
trace.list[[i]]$xaxis <- paste0("x", panel)
560+
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+
}
565+
}
556566
xanchor <- if (p$facet$free$y) paste0("y", panel) else paste0("y",row)
557567
}
558568
}

R/trace_generation.R

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,10 +217,10 @@ layer2traces <- function(l, d, misc) {
217217
tr$name <- as.character(name.list[[1]])
218218
}
219219
dpd <- data.params$data
220-
if ("PANEL" %in% names(dpd) && nrow(dpd) > 0)
221-
{
220+
if ("PANEL" %in% names(dpd) && nrow(dpd) > 0) {
222221
tr$xaxis <- paste0("x", dpd[1, "COL"])
223222
tr$yaxis <- paste0("y", dpd[1, "plotly.row"])
223+
tr$PANEL <- dpd[1, "PANEL"]
224224
}
225225

226226
if (is.null(tr$name) || tr$name %in% names.in.legend)

tests/testthat/test-ggplot-facets.R

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,14 @@ test_that("facet_grid(..., scales = 'free') doesnt create interior scales.", {
9292
expect_axes(info, 2L)
9393
expect_axes(info, 1L, "y")
9494
})
95+
96+
gg <- ggplot(mtcars, aes(mpg, wt)) +
97+
geom_point() + geom_line() +
98+
facet_wrap(~vs, scales = "free")
99+
100+
test_that("facet_wrap(..., scales = 'free') can handle multiple traces on each panel", {
101+
info <- save_outputs(gg, "facet_wrap_free_mult")
102+
yaxes <- sapply(info$data, "[[", "yaxis")
103+
modes <- sapply(info$data, "[[", "mode")
104+
expect_true(length(unique(paste(yaxes, modes))) == 4)
105+
})

0 commit comments

Comments
 (0)