Почему только первый график не помечен фигурой, в отличие от остальных графиков на графике?

#ios #swift #ios-charts

#iOS #swift #ios-диаграммы

Вопрос:

Я пытаюсь построить точки в lineChartView классе. Затем я нанес на него данные, но я вижу очень забавную вещь. Второй график помечен, но не первый.

введите описание изображения здесь

Я настраиваю LineChartView экземпляр и назвал его lineChart :

 var lineChart: LineChartView = {
   var l = LineChartView()
    l.translatesAutoresizingMaskIntoConstraints = false
    l.backgroundColor = .white
    return l
}()
 

lineChartDataPoints содержит ChartDataEntry классы, которые содержат x и y значения:

 var lineChartDataPoints: [ChartDataEntry] = []
 

Я перебираю xData и добавляю ChartDataEntry class к lineChartDataPoints . xData и yData удержание переменной x и y значения: (который генерируется в другой функции и на самом деле не является предметом этого вопроса)

  for i in 0..<xData.count {

        let data = ChartDataEntry(x: Double(i   1), y: Double(yData[i])!)
        lineChartDataPoints.append(data)
    }
 

Затем я добавляю lineChartDataPoints к LineChartDataSet :

 let lineDataSet = LineChartDataSet(values: lineChartDataPoints, label: "Values")
 

Затем lineDataSet добавляется lineData после установки параметров.

  lineDataSet.colors = [UIColor.red]
 lineDataSet.lineWidth = 5
 lineDataSet.circleColors = [UIColor.blue]
 lineDataSet.circleRadius = 5

 lineData.addDataSet(lineDataSet)
 

И это, очевидно, не потому, что есть только одна точка. Потому что я пробовал это:

 print("data (lineChartDataPoints)")

// data [ChartDataEntry, x: 1.0, y 1.0, ChartDataEntry, x: 6.0, y 1.0]
 

Для отображения графика определенно указаны две точки, но я довольно озадачен тем, почему первая точка не будет помечена синей точкой, как вторая точка.

Ответ №1:

Перед установкой новой платформы диаграмм (версии 3.2) для Swift 5 у меня не было этой проблемы. В Charts framework были внесены некоторые изменения. Установка новейшего патча (3.3) решила эту проблему. Поэтому обновите до последней версии этой платформы, чтобы избежать этой проблемы.