Ich arbeite an einem verknüpften Plot (ähnlich wie The SharedData plot pipeline von Carson Sievert in Plot für R. Das Plot zeigt eine Legende für einen Gegenstand, über den ich gerade schwebe. Allerdings zeigt die Legende gerade zwei Elemente, eine für das Balkendiagramm und ein für das Liniendiagramm.Filterlegende in verknüpften Ansichten mit plotly
- Wie kann ich das erste Legende Element (das rote Quadrat für das Balkendiagramm) lösche und nur die Legende für das Liniendiagramm (rote Linie) halte ?
Hier aktuelle Code:
library(ggplot2)
library(crosstalk)
library(plotly)
sd <- SharedData$new(txhousing, ~city)
base <- plot_ly(sd, color = I("black")) %>%
group_by(city) %>%
layout(showlegend = TRUE)
p1 <- base %>%
summarise(has = sum(is.na(median))) %>%
filter(has > 0) %>%
arrange(has) %>%
add_bars(x = ~has, y = ~factor(city, levels = city),
hoverinfo = "none", showlegend = FALSE) %>%
layout(
barmode = "overlay",
xaxis = list(title = "Number of months missing"),
yaxis = list(title = "")
)
p2 <- base %>%
add_lines(x = ~date, y = ~median, alpha = 0.3, showlegend = FALSE) %>%
layout(xaxis = list(title = ""))
gp <- subplot(p1, p2, titleX = TRUE, widths = c(0.3, 0.7)) %>%
layout(margin = list(l = 120)) %>%
highlight(color = "red",
defaultValues = "Victoria",
selected = attrs_selected(showlegend = TRUE, mode = "lines"
))
gp
Es wurde irgendwo erwähnt, dass das letzte Entfernen des Legendenelements funktionieren könnte, aber es funktioniert nicht für mich hier.
gp$x$data[[1]]$showlegend <- FALSE
Soweit ich weiß, Sie können das direkt in Plotly nicht. Sie könnten jedoch Javascript-Code zu Ihrem Grundstück hinzufügen, um sich um das zu kümmern, was Sie brauchen. –