Как изменить высоту диаграммы в функции hchart() в R (пакет highcharter) без использования оператора канала?

Я создал приложение Shiny, в котором я создаю график из объектов hist() и density(), сохраненных в виде списка в файле .RDS из другого файла сценария. Итак, в блестящем я только читаю .RDS и делаю сюжет.

Теперь все работает, за исключением того, что я не нахожу, как изменить высоту графика highchart с помощью функции hchart(). В моем коде, как он был построен, я не могу работать с каналами "%>%", потому что я использую hchart внутри функции purrr::map().

Чтобы лучше объяснить, я создал небольшой пример, который следует ниже.

 # Example of how the objects are structured
        list <-
          list(df1 = list(Sepal.Length = hist(iris$Sepal.Length, plot = FALSE)),
               df2 = list(Sepal.Length = density(iris$Sepal.Length)))

 # Example of a plot built with hchart function
        list[['df2']]['Sepal.Length'] %>% 
        purrr::map(hchart, showInLegend = FALSE)

 # Example of what does not work
        list[['df2']]['Sepal.Length'] %>% 
        purrr::map(hchart, showInLegend = FALSE, height = 200)

На самом деле, я также хотел бы изменить дополнительные параметры диаграммы, например, цвета. Но я не нахожу способ с этим решением, которое я нашел.

Заранее спасибо.

Владимир.


person Wlademir Ribeiro Prates    schedule 27.11.2018    source источник
comment
Привет, @wlademir-ribeiro-prates, вопрос: list[['df2']]['Sepal.Length'] %>% purrr::map(hchart, showInLegend = FALSE) — это список чартерных карт, верно?   -  person jbkunst    schedule 10.12.2018
comment
Да @jbkunst. Это список. Я сделал это, потому что я создаю один скрипт для обработки данных и создания объектов диаграммы. Затем я использую вывод для анализа результатов в блестящем приложении. Заранее спасибо.   -  person Wlademir Ribeiro Prates    schedule 10.12.2018


Ответы (1)


Я вижу 2 основных способа сделать то, что вам нужно (не знаю, почему вы не можете использовать канал):

Опция 1

Создайте функцию для обработки всех данных и добавьте параметры внутри этой функции:

get_hc <- function(d) {
  hchart(d, showInLegend = FALSE) %>%
    hc_size(heigth = 200) %>%
    hc_title(text = "Purrr rocks")
} 

Затем:

 list_of_charts <- list[['df2']]['Sepal.Length'] %>% 
        purrr::map(get_hc)

Вариант 2

Вы можете последовательно использовать purrr::map:

list_of_charts <- list[['df2']]['Sepal.Length'] %>% 
    purrr::map(hchart, showInLegend = FALSE)

# change heigth
list_of_charts <- purrr::map(list_of_charts, hc_size, height = 200)

# change title
list_of_charts <- purrr::map(list_of_charts, hc_title. text = "Purrr rocks")

Или вы можете последовательно использовать комбинацию purrr::map/ %>%:

list_of_charts <- list[['df2']]['Sepal.Length'] %>% 
    purrr::map(hchart, showInLegend = FALSE) %>%
    purrr::map(hc_size, height = 200) %>%
    purrr::map(hc_title, text = "Purrr rocks")
person jbkunst    schedule 10.12.2018