首页 > 解决方案 > R在Plotly中禁用图层

问题描述

我有一个包含多条线的图,并且希望只使用一些活动层来初始化它。可能吗?以下是数据的示例:

    set.seed(101)
    df <- data.frame(x = seq(1,20,1),
                     y1 = runif(20),
                     y2 = runif(20),
                     y3 = runif(20),
                     y4 = runif(20))
    
    plot_ly(df, x = ~x) %>%
      add_lines(y = ~y1, name='y1', line = list(color = 'rgba(255,0,0,1')) %>%
      add_lines(y = ~y2, name='y2', line = list(color = 'rgba(0,255,0,1')) %>%
      add_lines(y = ~y3, name='y3', line = list(color = 'rgba(106,90,205,1')) %>%
      add_lines(y = ~y4, name='y4', line = list(color = 'rgba(0,0,255,1')) %>%
        layout(
        xaxis = list(title = "x", domain = c(0,1), tickmode = 'auto'),
        yaxis = list(title = 'y', side = "left", color = "black", position = 0,
                     anchor = 'free', range = c(0,1), dtick = 1),
        showlegend = T
    )

我想要的是生成一个包含所有线条的图,但例如关闭 y3 和 y4 并且仍然允许用户打开它(这个图是闪亮应用程序的一部分)。

甚至可能吗?

谢谢!

标签: rshinyplotlyr-plotly

解决方案


您需要为visible = "legendonly"要隐藏的痕迹进行设置:

library(plotly)

set.seed(101)
df <- data.frame(x = seq(1,20,1),
                 y1 = runif(20),
                 y2 = runif(20),
                 y3 = runif(20),
                 y4 = runif(20))

plot_ly(df, x = ~x) %>%
  add_lines(y = ~y1, name='y1', line = list(color = 'rgba(255,0,0,1')) %>%
  add_lines(y = ~y2, name='y2', line = list(color = 'rgba(0,255,0,1')) %>%
  add_lines(y = ~y3, name='y3', line = list(color = 'rgba(106,90,205,1'), visible = "legendonly") %>%
  add_lines(y = ~y4, name='y4', line = list(color = 'rgba(0,0,255,1'), visible = "legendonly") %>%
  layout(
    xaxis = list(title = "x", domain = c(0,1), tickmode = 'auto'),
    yaxis = list(title = 'y', side = "left", color = "black", position = 0,
                 anchor = 'free', range = c(0,1), dtick = 1),
    showlegend = TRUE
  )

要获取有关可用跟踪属性的更多信息,请使用:

schema()

并按如下方式导航:

对象 ► 轨迹 ► 分散 ► 属性


推荐阅读