// // IHLineChartModel.swift // Inhealth // // Created by weclouds on 2019/12/16. // Copyright © 2019 weclouds. All rights reserved. // import UIKit import Charts struct LineChartRawData { var yData:[Double]! init(yData:[Double]) { self.yData = yData } } struct YRawData { var yData:[Double] } struct LineChartRawDataWithLabel { var data:LineChartRawData } class IHLineChartModel: NSObject { static var share = IHLineChartModel() fileprivate func getLineDataSet(_ rawData:LineChartRawData) -> LineChartDataSet? { var yChartVals = [ChartDataEntry]() for (index, val) in rawData.yData.enumerated() { yChartVals.append(ChartDataEntry(x: Double(index), y: val)) } var lineDataSet:LineChartDataSet? = nil lineDataSet = LineChartDataSet(entries: yChartVals) configDataSet(lineDataSet!) lineDataSet?.setColor(UIColor(hexString: "#573F95")!) lineDataSet?.circleColors = [.clear] return lineDataSet } fileprivate func configDataSet(_ lineDataSet :LineChartDataSet) { lineDataSet.drawIconsEnabled = false lineDataSet.lineWidth = 1.5 lineDataSet.circleRadius = 3 lineDataSet.drawCircleHoleEnabled = true lineDataSet.circleHoleRadius = 1.5 lineDataSet.circleHoleColor = .clear lineDataSet.valueFont = .systemFont(ofSize: 9) lineDataSet.formLineDashLengths = [5, 2.5] lineDataSet.formLineWidth = 1.5 lineDataSet.formSize = 15 lineDataSet.resetCircleColors(0) //删除第一个点 lineDataSet.drawValuesEnabled = false lineDataSet.drawFilledEnabled = false lineDataSet.mode = .cubicBezier lineDataSet.highlightEnabled = true //不启用十字线 lineDataSet.highlightColor = UIColor.clear // lineDataSet.highlightLineWidth = 2 let valueFormatter = NumberFormatter() valueFormatter.numberStyle = .decimal valueFormatter.maximumFractionDigits = 3 lineDataSet.drawFilledEnabled = false } fileprivate func gLineChartSetData(_ chartView:LineChartView, xVals:[String], rawDatas:[LineChartRawDataWithLabel]) { var dataSets = [LineChartDataSet]() for i in 0.. [LineChartRawDataWithLabel] { var yLineDatas = [LineChartRawDataWithLabel]() var index:Int = 0 for rawData in rawDatas { let yLineData = LineChartRawDataWithLabel(data: LineChartRawData(yData: rawData.yData)) yLineDatas.append(yLineData) index += 1 } return yLineDatas } open func gRealChartSetData(_ chartView:LineChartView, xVals:[String], rawDatas:[YRawData]) { let yLineDatas = gChangeToYLineData(rawDatas) gLineChartSetData(chartView, xVals: xVals, rawDatas: yLineDatas) } }