test_that("can create multiple traces from name argument", {
l <- plot_ly() %>%
add_markers(x = 1:10, y = 1:10, name = rep(c("a", "b"), 5)) %>%
plotly_build()
expect_length(l$x$data, 2)
expect_equal(l$x$data[[1]]$name, "a")
expect_equal(l$x$data[[2]]$name, "b")
})
test_that("can override name argument", {
l <- plot_ly() %>%
add_markers(x = 1:10, y = 1:10, split = rep(c("a", "b"), 5), name = "z") %>%
plotly_build()
expect_length(l$x$data, 2)
expect_equal(l$x$data[[1]]$name, "z")
expect_equal(l$x$data[[2]]$name, "z")
# can get back old behvaior
l2 <- plot_ly() %>%
add_markers(x = 1:10, y = 1:10, split = rep(c("a", "b"), 5), name = paste0(rep(c("a", "b"), 5), "
z")) %>%
plotly_build()
expect_length(l2$x$data, 2)
expect_equal(l2$x$data[[1]]$name, "a
z")
expect_equal(l2$x$data[[2]]$name, "b
z")
})
test_that("doesn't break old behavior", {
# from https://community.plot.ly/t/manual-color-bug/10479
density1 <- density(diamonds[diamonds$cut %in% "Fair", ]$carat)
density2 <- density(diamonds[diamonds$cut %in% "Ideal",]$carat)
l <- plot_ly(x = ~density1$x, y = ~density1$y, type = 'scatter', mode = 'lines', name = 'Fair cut', fill = 'tozeroy',
fillcolor = 'rgba(168, 216, 234, 0.5)',
line = list(width = 0.5)) %>%
add_trace(x = ~density2$x, y = ~density2$y, name = 'Ideal cut', fill = 'tozeroy',
fillcolor = 'rgba(255, 212, 96, 0.5)') %>%
plotly_build()
expect_equal(l$x$data[[1]]$name, "Fair cut")
expect_equal(l$x$data[[2]]$name, "Ideal cut")
})
test_that("adding trace name with frame does not throw frameOrder warning", {
dt <- data.frame(source = rep(c(rep("TEL", 2) , rep("WEB", 2), rep("OTH",2)),2),
period = rep(c("AM", "PM"), 6),
y_val = runif(12),
year = c(rep(2020,6), rep(2021,6)))
p1 <- plot_ly()
for (yr in unique(dt$year)){
which_lines <- which(dt$year==yr)
p1 <- add_trace(p1,
x = dt$period[which_lines],
y = dt$y_val[which_lines],
frame = dt$source[which_lines],
type = "scatter", mode = "lines+markers",
name = yr)
}
expect_warning(l <- plotly_build(p1), NA)
expect_equal(l$x$data[[1]]$name, 2020)
expect_equal(l$x$data[[2]]$name, 2021)
})
test_that("adding trace name does not throw error", {
#From ropensci/plotly/issues/1618
df <- data.frame(category=c('a', 'b', 'c', 'd', 'a', 'b', 'c', 'd'),
year=c(2000, 2000, 2000, 2000, 2001, 2001, 2001, 2001),
val_a=c(1,2,2,1,2,5,6,8),
val_b=c(3,5,4,7,1,9,2,12))
p1 <- plot_ly(data = df, frame = ~year) %>%
add_markers(x = ~val_a, y = ~category, name = "Val_A", color = I("red")) %>%
add_markers(x = ~val_b, y = ~category, name = "Val_B", color = I("blue")) %>%
add_segments(x = ~val_a, xend = ~val_b, y = ~category, yend = ~category, showlegend=F) %>%
layout(
title = "Val A v Val B",
xaxis = list(title = "Value"),
yaxis = list(title = ""),
margin = list(l = 65)
)
expect_error(l <- plotly_build(p1), NA)
expect_equal(l$x$data[[1]]$name, "Val_A")
expect_equal(l$x$data[[2]]$name, "Val_B")
#From ropensci/plotly/issues/1903
df1 <- data.frame(frame = 1:10, x = 1:10, y = 0)
df2 <- data.frame(frame = rep(1:10, 1:10),
x = unlist(lapply(1:10, function(x) 1:x)),
y = 1)
p2 <- plot_ly() %>%
add_trace(data = df1, type = "scatter", mode = "markers", x = ~x, y = ~y, frame = ~frame, name= "A") %>%
add_trace(data = df2, type = "scatter", mode = "lines", x = ~x, y = ~y, frame = ~frame, name = "B")
expect_error(l1 <- plotly_build(p2), NA)
})