Highcharter - добавить несколько текстовых аннотаций

1

У меня есть столбец с колонтитулом, где мне нужна текстовая аннотация ниже каждого столбца. Я только нашел способ добавить одну аннотацию. Добавление второй аннотации дает ошибку All arguments must be named list. К сожалению, я знаю, как использовать функцию hc_annotations.

Вот небольшой рабочий пример и биты кода, которые я пробовал:

hc <- highchart() %>% 
    hc_chart(type = "column") %>%
    hc_plotOptions(column = list(stacking = "normal")) %>%
    hc_title(text = "Plot with Annotations", useHTML = TRUE) %>%
    hc_yAxis(title = "") %>%
    hc_xAxis(title = "") %>%
    hc_xAxis(categories = c("A", "B", "C", "D", "E"))

hc <- hc %>%
    hc_add_series(name = "S1", data = c(5, 1, 2, 4, 5),
           dataLabels = list(format='{point.y:,.1f}', align = "center", enabled = TRUE))

hc <- hc %>%
    hc_add_series(name = "S2", data = c(-1, -4, 3, -2, -4),
           dataLabels = list(format='{point.y:,.1f}', align = "center", enabled = TRUE))


##try to add annotations

#1
hc <- hc %>%
    hc_annotations(list(xValue = 0, yValue = -2, title = list(text = '-6 pp'))) 
hc <- hc %>%
    hc_annotations(list(xValue = 1, yValue = -8, title = list(text = '-5 pp')))

#2 - basically the same as #1
hc <- hc %>%
    hc_annotations(list(xValue = 0, yValue = -2, title = list(text = '-6 pp'))) %>%
    hc_annotations(list(xValue = 1, yValue = -8, title = list(text = '-5 pp')))

#3
hc <- hc %>%
    hc_annotations(list(list(xValue = 0, yValue = -2, title = list(text = '-6 pp')),
                        list(xValue = 0, yValue = -8, title = list(text = '-5 pp')))
                   ) 

  hc

Я просто использовал здесь две аннотации в качестве витрины. В моем конечном коде есть необходимость в аннотации ниже каждого столбца.

Теги:
highcharts
r-highcharter

1 ответ

1
Лучший ответ

Это известная проблема, и она решает следующие задачи:

  • hc_add_annotation
  • hc_add_annotations

Пример использования:

hc %>%
  hc_add_annotation(xValue = 0, yValue = -2, title = list(text = '-6 pp')) %>% 
  hc_add_annotation(xValue = 1, yValue = -4.5, title = list(text = '-5 pp'))

hc %>% 
  hc_add_annotations(
    list(
      list(xValue = 0, yValue = -2, title = list(text = '-6 pp')),
      list(xValue = 1, yValue = -4.5, title = list(text = '-5 pp'))
      )
    )

Или еще лучше:

df <- data_frame(
  xValue = c(0, 1),
  yValue = c(-2, -4.5),
  title = c("-6pp", "-5pp")
)

df <- df %>% 
  mutate(title = map(title, function(x) list(text = x)))

df

#> # A tibble: 2 x 3
#>   xValue yValue      title
#>    <dbl>  <dbl>     <list>
#> 1      0   -2.0 <list [1]>
#> 2      1   -4.5 <list [1]>

hc %>% 
  hc_add_annotations(df)

Ссылка: https://github.com/jbkunst/highcharter/issues/171

  • 1
    Спасибо вам большое!
  • 1
    Код больше не работает.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню