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)
如果您还有其他问题,请告诉我。
当我将 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)
如果您还有其他问题,请告诉我。