R программирование формата Highchart Number - PullRequest
0 голосов
/ 06 января 2020

enter image description here Я пытаюсь нарисовать график с использованием Highchart. Мне нужен формат данных в формате Million. Например, для Первой точки на скриншоте 2423175 должно отображаться как 2,42 Миллион. Как изменить формат = "{point.y}", чтобы он отображался в Миллионах

 highchart() %>% 
      hc_add_series(data, hcaes(x = data$Month, y = data$Total, color = data$Total), type = "line",dataLabels = list(
        enabled = TRUE,
        format = "{point.y} "  )
                    ) %>%
      hc_tooltip(cros[![enter image description here][1]][1]shairs = TRUE, borderWidth = 1.5,headerFormat= "",
                 pointFormat = paste("Year: <b>{point.x:%b-%y}</b> <br> Population: <b>{point.y}</b>")) %>%
      hc_title(text = "Population  by year") %>% 
      hc_subtitle(text = "2016-2020") %>%
      hc_xAxis(type = "datetime", title = list(text = "Year")) %>%
      hc_yAxis(title = list(text = "count per year"))      %>%
      hc_legend(enabled = FALSE) %>% 
      hc_add_theme(custom_theme)

Ответы [ 2 ]

1 голос
/ 06 января 2020

Вот двухэтапный способ сделать это:

Во-первых, вам нужно отформатировать числа от 2423175 до 2,42, прежде чем создавать свой график.

data$Total <- format(round(data$Total / 1e6, 1), trim = TRUE)

Далее, чтобы добавить «Миллион» после чисел в Highcharter, измените формат с format = "{point.y} " на format = paste("{point.y} Million") при создании графика. Теперь ваши номера должны отображаться в формате «X.XX Million».

1 голос
/ 06 января 2020

Вы можете использовать dataLabels.formatter: https://api.highcharts.com/highcharts/series.line.dataLabels.formatter для форматирования ваших данных. Я знаю, как это сделать в JavaScript и внедрить этот код в функцию JS () в R:

hc_add_series(data, hcaes(x = data$Month, y = data$Total, color = data$Total), type = "line",dataLabels = list(
    enabled = TRUE,
    formatter = JS("function() {
        return (this.y / 1000000).toFixed(2) + 'M'
      }") )
  ) %>%

JS пример: https://jsfiddle.net/BlackLabel/o49zcjLv

Дайте мне знать, если это сработало.

Редактировать: Весь рабочий код с примерами данных:

library(highcharter)

data <- data.frame(
  y = c(54324232,85325324,10424324,44234324,74324234, 44321413))

highchart() %>% 
  hc_add_series(data, type = "line", hcaes(y = y), dataLabels = list(
    enabled = TRUE,
    formatter = JS("function() {
        return (this.y / 1000000).toFixed(2) + 'M'
      }"
    )))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...