Скрыть определенные линии при старте Highcharts R - PullRequest
0 голосов
/ 13 октября 2019

У меня есть фрейм данных, в котором у меня есть 4 переменные, которые я отображаю при запуске моего приложения Shiny. Однако я хотел бы скрыть некоторые из них при запуске, чтобы «Цена» была единственной отображаемой переменной. Я использую пакет Highchart.

Я считаю, что нашел код java-скрипта, необходимый, но я не уверен, как вставить его в функцию старшей диаграммы.

Ниже приведен мой код с текущим выводом и желаемым выводом. Данные внизу

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

enter image description here

Мой желаемый результат будет выглядеть так при запуске: enter image description here

Вот код 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))

1 Ответ

1 голос
/ 15 октября 2019

Мой способ сделать это не идеальное решение. На самом деле, этот обходной путь довольно забавный, потому что ваше требование кажется очень простым в R, но я не разработчик R и знаю, как использовать код JavaScript только в R.

Я только что написал 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, но если вам нужно лучшее решение, вам нужен кто-то, кто знает, как анализировать ваши данныев Р.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...