I have some data and two categories for each datapoint "symbol" and "name". I am plotting the data and mapping the categories with different symbols and colors as seen below.
data <- data.frame(
x= c(1,2,3,4,5,6,7,8),
y = c(10,11,10,12,11,9,8,13),
symbol = c("invalid", "valid", "invalid",
"valid", "valid", "valid","valid", "valid"),
name = c("A", "B", "B", "A", "A", "A", "B", "B"))
plot_ly(data) %>%
add_markers(y = ~y, x = ~x, symbol = ~symbol, color = ~name,
symbols = c(4, 27),
mode = 'markers',
#split = ~name,
colors = c("red", "navy"))
The legend is very clumsy.
I want to merge the two legend entries with the cross and have a neutral color for the cross in the legend, like this:
I tried using the split
parameter, but that did not help.
You can do it in 3 steps:
Code:
data$labels <- data$name
levels(data$labels) <- c("A", "B", "invalid")
plot_ly(data, colors = c("red", "navy", "grey")) %>%
add_markers(y = ~y, x = ~x, color = ~labels,
data = data[data$symbol == "valid",],
symbols = 4,
mode = 'markers') %>%
add_markers(y = ~y, x = ~x, symbol = ~symbol,
color = factor("invalid", levels = c("A", "B", "invalid")),
data = data[data$symbol == "invalid",],
symbols = 27,
mode = 'markers',
name = 'invalid',
legendgroup = factor("invalid", levels = c("A", "B", "invalid"))) %>%
add_markers(y = ~y, x = ~x, symbol = ~symbol, color = ~labels,
data = data[data$symbol == "invalid",],
symbols = 27,
mode = 'markers',
legendgroup = factor("invalid", levels = c("A", "B", "invalid")),
showlegend = FALSE)
Result:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With