如何在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
相关产品推荐
相关产品推荐

