You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言的Highchart中调整第二个分区的尺寸?

解决Highchart多Y轴分区高度自定义问题

完全可以通过调整hc_yAxis_multiples里的height和top参数来分配相对高度,这两个参数支持百分比数值,和设置设备宽度的逻辑一致。原代码中成交量轴的占比偏高,你只需修改这两个参数的百分比值,同时保证top数值与上一个轴的height+间隔匹配,就能避免重叠或空隙过大。

修改后的示例代码

library(highcharter)

data <- data.frame(
  Date = as.Date('2023-01-01') + 0:4,
  Open = c(100, 105, 102, 108, 110),
  High = c(110, 107, 108, 112, 115),
  Low = c(95, 100, 99, 105, 107),
  Close = c(105, 102, 108, 100, 113),
  Volume = c(1000, 1500, 1200, 1300, 1600)
)

hc_data <- lapply(1:nrow(data), function(i) {
  list(
    as.numeric(as.POSIXct(data$Date[i])) * 1000,
    data$Open[i],
    data$High[i],
    data$Low[i],
    data$Close[i]
  )
})

hc_volume <- lapply(1:nrow(data), function(i) {
  list(
    x = as.numeric(as.POSIXct(data$Date[i])) * 1000,
    y = data$Volume[i],
    color = ifelse(data$Close[i] > data$Open[i], 'green', 'red')    
  )
})

hchart <- highchart(type = "stock") %>%
  hc_title(text = "K线与成交量图表") %>%
  hc_yAxis_multiples(
    # OHLC轴占70%高度
    list(title = list(text = "OHLC"), height = "70%", lineWidth = 2),
    # 成交量轴从72%位置开始,占28%高度(留2%作为间隔)
    list(title = list(text = "成交量"), top = "72%", height = "28%", offset = 0, lineWidth = 2)
  ) %>%
  hc_add_series(type = "candlestick", name = "AAPL", data = hc_data) %>%
  hc_add_series(type = "column", name = "成交量", data = hc_volume, yAxis = 1)%>%
  hc_plotOptions(candlestick = list(color = 'red', upColor = 'green', lineColor = 'red', upLineColor = 'green'))  
print(hchart)

关键调整说明

  • height:直接设置轴区域占整个图表的百分比,比如将OHLC轴设为70%,成交量轴设为28%,剩余2%作为两轴间隔
  • top:第二个轴的top值需等于第一个轴的height加上间隔百分比,比如第一个轴占70%、间隔2%,则第二个轴top="72%",确保轴不重叠且间距合理
  • 所有百分比(含间隔)建议不超过100%,避免布局溢出

内容的提问来源于stack exchange,提问作者VSR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 17:55:04