R Highcharter поля go странно в зависимости от y-max - PullRequest
0 голосов
/ 27 марта 2020

Я получаю огромный запас с правой стороны, когда я делаю свой y-max больше 500, но он выглядит нормально, когда ymax ниже 500.

См. MWE ниже:

library(highcharter)
library(data.table)

tmp.df.agg <- data.table(ContractName_interval = factor(c("Republican1",
                                                          "Republican2",
                                                          "Republican3",
                                                          "No Market1",
                                                          "Democratic3",
                                                          "Democratic2",
                                                          "Democratic1")),
                         votes = c(15,73,38,337,9,56,10),
                         color = c("#9f0000",
                                   "#cf0000",
                                   "#f9adad",
                                   "#d3d3d3",
                                   "#b5cacf",
                                   "#81b5c0",
                                   "#578b96"))

p <- highchart() %>%
  hc_add_series(type = "bar",
                data = tmp.df.agg,
                hcaes(y = votes, group = ContractName_interval),
                dataLabels = list(
                  enabled = TRUE,
                  style = list(textOutline = FALSE, fontSize = 20)
                )) %>%
  hc_colors(tmp.df.agg$color) %>%
  hc_xAxis(visible = FALSE, min = -1, max = 1) %>%
  hc_legend(enabled = FALSE) %>%
  hc_plotOptions(series=list(stacking='normal')) %>%
  hc_chart(backgroundColor = "transparent")


p %>%
  hc_yAxis(visible = FALSE, min = 1, max = 501)
p %>%
  hc_yAxis(visible = FALSE, min = 1, max = 500)

Правое поле также слишком велико, когда я вообще не использую пределы оси.

1 Ответ

2 голосов
/ 27 марта 2020

Это связано с тем, что Highcharts устанавливает axis.max на последний тик, который округлен на "целое" (например, десятки или сотни и т. Д. c) число. Если вы сделаете свой yAxis видимым, вы увидите, что последний тик равен либо 500, либо 550 (так что тики хорошо выровнены). Это имеет смысл. Когда для тика установлено значение 550, создается пустое пространство (вы назвали его margin).

Чтобы предотвратить это, вы можете жестко определить yAxis.tickPositions или установить для yAxis.endOnTick значение false. В целях безопасности вы также можете установить yAxis.maxPadding на 0.

Ссылки на API: https://api.highcharts.com/highcharts/yAxis.tickPositions https://api.highcharts.com/highcharts/yAxis.endOnTick https://api.highcharts.com/highcharts/yAxis.maxPadding

Если вы все равно хотите скрыть свою yAxis, лучшее решение - установить для endOnTick значение false:

p %>%
  hc_yAxis(visible = TRUE, min = 1, max = 501, endOnTick = FALSE, maxPadding = 0)

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

...