gpt4 book ai didi

ios - 使用 danielgindi/Charts 框架的 ios 中的烛台图表未正确显示

转载 作者:行者123 更新时间:2023-11-28 06:14:38 24 4
gpt4 key购买 nike

    var dataEntries: [ChartDataEntry] = []
let financialData = data

for chartData in financialData{
let dataEntry = CandleChartDataEntry(x: chartData.date, shadowH: chartData.High, shadowL: chartData.Low, open: chartData.Open, close: chartData.Close)
dataEntries.append(dataEntry)
}

let chartDataSet = CandleChartDataSet(values: dataEntries, label: "")
chartDataSet.axisDependency = .left
chartDataSet.drawValuesEnabled = false
chartDataSet.increasingColor = UIColor.green
chartDataSet.increasingFilled = false
chartDataSet.decreasingColor = UIColor.red
chartDataSet.decreasingFilled = true
chartDataSet.barSpace = 0.25
chartDataSet.shadowColor = UIColor.darkGray
chartDataSet.neutralColor = UIColor.blue

let chartData = CandleChartData(dataSet: chartDataSet)
chartView.data = chartData

let xaxis = chartView.xAxis
xaxis.valueFormatter = axisFormatDelegate

下面是从服务器接收的示例数据集和显示图表的图像。 https://api.cryptowat.ch/markets/gdax/btcusd/ohlc?periods=60

[收盘时间、开盘价、高价、低价、收盘价、成交量]

我需要帮助来修复数据的显示,因为目前它在任何方面都不像蜡烛图。有人可以帮我解决我在这里做错的事情吗。

CandleStick chart data being displayed in the app

最佳答案

以防万一有人遇到同样的问题,我也遇到了蜡烛问题,我根据这篇文章找到了解决方案: https://github.com/danielgindi/Charts/issues/2742

  • 为您的 chartView.xAxis.valueFormatter 创建一个支持您的 init 条目的类。
  • 获得结果条目后,我使用了 CandleChartDataEntry 上 x 的枚举值
  • 在继承自 IAxisValueFormatter 的类中的 stringForValue 方法中,按照您想要的方式显示字符串,在我的例子中是日期。

前两点:

//Check nil results
if result != nil {

//Save to Holder for future use
self.historyData = result

// Set the formatter class for the chartView
self.chartView.xAxis.valueFormatter = dateFormatter(elementsForFormatter: self.historyData!)

//Create a new chart data entry
var chartEntries = [ChartDataEntry]()

//Loop results
result?.enumerated().forEach({ (i, element) in

// I'm force unwrapping, but please take care of this don't do me...
let newDataEntryValue = CandleChartDataEntry(x:Double(i),
shadowH: element["high"] as! Double,
shadowL: element["low"] as! Double,
open: element["open"] as! Double,
close: element["close"] as! Double)

chartEntries.append(newDataEntryValue)
})


}
// Do rest of conf. for your chart....

最后一点(类实现):

class dateFormatter: IAxisValueFormatter {

var elements:Array<Dictionary<String,Any>>

init(elementsForFormatter:Array<Dictionary<String,Any>>) {
self.elements = elementsForFormatter
}
func stringForValue(_ value: Double, axis: AxisBase?) -> String {

let formatter = DateFormatter()
formatter.dateStyle = .short

//Get the date based on the value which is the index
if let time = self.elements[Int(value)]["time"] as? Double {
print(time)
let dateString = formatter.string(from: Date(timeIntervalSince1970: TimeInterval(time)))

return dateString

} else {
return ""
}


}
}

希望这对某人有帮助!

关于ios - 使用 danielgindi/Charts 框架的 ios 中的烛台图表未正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45537225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com