R Highcharter 利润率根据 y-max 变得奇怪

R Highcharter margins go weird depending on y-max

当我将 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)

当我根本不使用轴限制时,右边距也太大了。

这是因为 Highcharts 将 axis.max 设置为最后一个价格变动 四舍五入 为 "whole"(如数十或数百等)数字。如果您使 yAxis 可见,您将看到最后一个刻度为 500 或 550(因此刻度很好地对齐)。这说得通。 当报价设置为 550 时,将创建一个空的 space(您称之为保证金)。

为防止出现这种情况,您可以严格定义 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)

如果您还有其他问题,请告诉我。