Swift中TradingView Lightweight图表能否将横轴从日改为分钟显示?
在Swift中为TradingView Lightweight图表设置分钟刻度替代日期显示
要实现将TradingView Lightweight图表的时间轴从日期刻度替换为分钟刻度,核心是通过配置时间轴(Time Scale)的自定义格式化器和刻度规则,以下是具体实现步骤:
1. 自定义时间刻度格式化逻辑
通过TimeScaleOptions中的timeFormatter和tickMarkFormatter,将时间戳转换为分钟维度的显示文本(比如时分格式HH:mm,或相对于起始时间的累计分钟数)。
2. 配置时间轴刻度间隔
强制设置时间轴的最小间隔,确保图表按分钟粒度渲染刻度。
Swift代码示例
import LightweightCharts // 假设已准备好符合要求的CandlestickData数组,time字段为毫秒级时间戳 let yourCandlestickData: [CandlestickData] = // 你的K线数据 // 初始化图表配置 let chartOptions = ChartOptions() chartOptions.timeScale = TimeScaleOptions() // 自定义主时间刻度文本格式(显示时分) chartOptions.timeScale?.timeFormatter = { timestamp in let date = Date(timeIntervalSince1970: timestamp / 1000) let formatter = DateFormatter() formatter.dateFormat = "HH:mm" return formatter.string(from: date) } // 自定义刻度标记的文本格式 chartOptions.timeScale?.tickMarkFormatter = { tickMark in guard let timestamp = tickMark.timestamp else { return "" } let date = Date(timeIntervalSince1970: timestamp / 1000) let formatter = DateFormatter() formatter.dateFormat = "HH:mm" return formatter.string(from: date) } // 设置最小刻度间隔,适配分钟粒度 chartOptions.timeScale?.minBarSpacing = 1 // 可选:固定左侧边缘,避免刻度偏移 chartOptions.timeScale?.fixLeftEdge = true // 创建图表并加载数据 let chart = Chart(frame: CGRect(x: 0, y: 0, width: 300, height: 200), options: chartOptions) let candlestickSeries = chart.addCandlestickSeries() candlestickSeries.setData(yourCandlestickData)
注意事项
- 确认传入的
CandlestickData.time为毫秒级时间戳(Lightweight Charts默认时间单位),若为秒级需乘以1000转换。 - 若需严格按整分钟刻度对齐,需保证数据的时间戳对应整分钟节点(例如每60000毫秒一个数据点)。
- 可通过
chart.timeScale().setVisibleRange(from: startTimestamp, to: endTimestamp)控制显示的时间范围,让分钟刻度更清晰。
内容的提问来源于stack exchange,提问作者usr324
相关产品推荐
相关产品推荐

