在Plotly的动画传奇中进行持久的选择

时间:2017-09-04 03:05:57

标签: r shiny plotly

我试图在R中使用有光泽的情节来为一些全球城市的XY数据点(x =人口,y =汽车)随时间的移动设置动画。每个城市都按其所在的大陆分组/着色(即亚洲所有城市的颜色相同,欧洲所有城市的颜色相同,等等)。此阶段的所有内容,包括动画,都已正常工作,播放按钮和日期滑块正确工作,以显示这些城市的结果随时间的变化。

我的问题是,在动画图表时,我对图表图例中特定大洲的选择/取消选择不会持续存在。例如,如果我在绘图图表的图例中切换“欧洲”,正如预期的那样,与欧洲城市相关的所有数据点都将消失。但是,如果我然后单击播放按钮来运行动画,则欧洲数据点会在它们保持隐藏状态时再次出现。是否有一个可以改变的情节设置,以便在我制作动画时,我在传奇中的选择不再出现?

我附上了2张图片,显示了这个问题。

1:我从传说中取消选择了“欧洲”,现在它变得灰暗了。所有欧洲数据点都按预期消失。这里没有问题。 #1

2:这就是问题所在。尽管在图例中仍然取消选择“欧洲”,但在将日期滑块拖动到第二天时,橙色/欧洲数据点会重新出现。有没有办法确保它们隐藏起来? #2

我已经复制了我的R代码,下面是闪亮的。

感谢您的帮助!

server.R

library("shiny")
library ("ggplot2")
library ("plotly")

setwd ("C:/Desktop")
file.names <- list.files (pattern = ".csv", recursive = TRUE)
imported <- sapply (file.names, read.csv, header = TRUE, simplify = FALSE)    
names (imported) <- gsub (".csv", "", names(imported))
names (imported) <- strptime (names(imported), "%Y%m%d")

for (i in 1:length(imported)) {
  imported[[i]]$Date <- names(imported[i])
}
imported <- do.call (rbind, imported)
imported <- as.data.frame (imported)

shinyServer(function(input, output) {
  output$chart.animate <- renderPlotly({
    chart.xy <- plot_ly()
    chart.xy <- add_markers(chart.xy, x = ~Population, y = ~Cars, color = ~Continent, frame = ~Date, ids =~City, data = imported)
    chart.xy <- animation_opts(chart.xy, redraw = FALSE)
    return (chart.xy)
  })
})

ui.R

library("shiny")

shinyUI(fluidPage(
  mainPanel(
    plotlyOutput('chart.animate')
  )
))

1 个答案:

答案 0 :(得分:0)

在Python3中,您可以通过动画将所有条目放入数据词典中带有“legendgroup”=“[group name]”的图例组中,从而在图例条目中进行持久选择。

如果您将所有“亚洲”系列放入一个图例组(同样适用于其他系列),您的选择/取消选择将通过动画保留。