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

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

Теперь все работает, за исключением того, что я не нахожу, как изменить высоту графика старшей диаграммы с помощью функции 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)

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

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

Владемир.

1 Ответ

0 голосов
/ 10 декабря 2018

Я вижу 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")
...