【问题标题】:R Highcharter margins go weird depending on y-maxR Highcharter 边距根据 y-max 变得很奇怪
【发布时间】:2020-07-08 09:21:38
【问题描述】:

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

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

【问题讨论】:

    标签: r graph highcharts margin r-highcharter


    【解决方案1】:

    这是因为 Highcharts 将axis.max 设置为最后一个刻度,该刻度四舍五入 为“整数”(如几十或几百等)数字。如果您使 yAxis 可见,您将看到最后一个刻度是 500 或 550(因此刻度很好地对齐)。这说得通。 当刻度设置为 550 时,会创建一个空白区域(您称之为边距)。

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

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

    【讨论】:

      猜你喜欢
      • 2015-02-10
      • 2020-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-11
      • 2011-04-29
      • 2014-02-10
      相关资源
      最近更新 更多