首页 > 解决方案 > 在启动 Highcharts R 上隐藏特定行

问题描述

我有一个数据框,其中有 4 个变量,我在 Shiny 应用程序启动时绘制这些变量。但是我想在启动时隐藏其中的一些,以便“价格”是唯一绘制的变量。我正在使用 highchart 包。

我相信我找到了所需的 java 脚本代码,但我不确定如何将它插入到 highchart 函数中。

下面是我的代码与当前输出与所需输出。数据在底部

data %>% hchart("line",  hcaes(x = date, y = Value, group = Variable))%>% hc_add_theme(hc_theme_ffx())

在此处输入图像描述

我想要的输出在启动时看起来像这样: 在此处输入图像描述

这是我认为适合我在某处调用的 JS 代码:

"series: [{
           name: 'Value',
           data: '[iv30, iv60, Hvol20]',
           visible: false
        }]"

这是我的数据示例:

 data = structure(list(date = structure(c(18180, 18179, 18178, 18177, 
    18176, 18173, 18172, 18171, 18170, 18169, 18180, 18179, 18178, 
    18177, 18176, 18173, 18172, 18171, 18170, 18169, 18180, 18179, 
    18178, 18177, 18176, 18173, 18172, 18171, 18170, 18169, 18180, 
    18179, 18178, 18177, 18176, 18173, 18172, 18171, 18170, 18169
    ), class = "Date"), Variable = c("Hvol20", "Hvol20", "Hvol20", 
    "Hvol20", "Hvol20", "Hvol20", "Hvol20", "Hvol20", "Hvol20", "Hvol20", 
    "iv30", "iv30", "iv30", "iv30", "iv30", "iv30", "iv30", "iv30", 
    "iv30", "iv30", "iv60", "iv60", "iv60", "iv60", "iv60", "iv60", 
    "iv60", "iv60", "iv60", "iv60", "Price", "Price", "Price", "Price", 
    "Price", "Price", "Price", "Price", "Price", "Price"), Value = c(13.95, 
    13.63, 13.46, 13.26, 12.72, 12.65, 12.03, 11.99, 11.13, 10.31, 
    13.83, 16.31, 16.71, 17.91, 15.19, 15.08, 17.87, 18.48, 15.9, 
    13.75, 14.69, 16.52, 17.09, 18.16, 16.23, 15.75, 18, 18.9, 16.76, 
    15.63, 296.7, 293.24, 291.32, 288.67, 293.08, 294.4, 290.42, 
    288.06, 293.24, 296.77)), row.names = c(NA, -40L), class = c("grouped_df", 
    "tbl_df", "tbl", "data.frame"), groups = structure(list(Variable = c("Hvol20", 
    "iv30", "iv60", "Price"), .rows = list(1:10, 11:20, 21:30, 31:40)), row.names = c(NA, 
    -4L), class = c("tbl_df", "tbl", "data.frame"), .drop = TRUE))

标签: rhighcharts

解决方案


我的做法并不是一个完美的解决方案。实际上,这种解决方法有点有趣,因为您的要求在 R 中似乎很简单,但我不是 R 开发人员,我只知道如何在 R 中使用 JavaScript 代码。

我刚刚编写了一个 JavaScript 函数,它在第一次加载图表时隐藏你的前 3 个系列。我使用 JS("") 函数将我的 JavaScript 代码注入到 R 中。

data %>% hchart("line",  hcaes(x = date, y = Value, group = Variable))%>% hc_add_theme(hc_theme_ffx()) %>%
hc_chart(
  events = list(
    load = JS("function() {
        this.series.forEach(function(series, i) {
        if (i < 3) {
            series.hide();
        }
      });
    }")
  )
)

它...有效 :D 但如果您需要更好的解决方案,您需要知道如何在 R 中解析数据的人。


推荐阅读