Нулевые точки данных iOS-Charts не отображаются на диаграмме

Подобно приложению Health в iOS 8, где нулевые / пустые точки данных не отображаются, а метки оси X все еще присутствуют. Можно ли добиться того же, используя iOS-Charts в качестве библиотеки диаграмм для моего проекта?


person naz    schedule 15.05.2015    source источник
comment
Вы можете добиться этого с помощью core-plot. Я не использовал iOS-Charts, поэтому не могу сказать.   -  person Sarim Sidd    schedule 15.05.2015


Ответы (4)


Вы не должны передавать nil, он не принимает nil, и Xcode предупредит об этом. Что вам нужно сделать, это просто не пройти его вообще.

Необязательно передавать значение y для каждого индекса x. Вам просто нужно убедиться, что значения y упорядочены в соответствии с индексами x.

person daniel.gindi    schedule 11.06.2015
comment
Я пропустил значения в индексе 3, но теперь он рисует график .... Я пробовал использовать заполненную линейную диаграмму, то есть диаграмму с областями - person H Raval; 12.01.2017
comment
Как передать отдельные массивы для осей X и Y? Не могли бы вы опубликовать образец, который может помочь? Я читал это везде, но все еще не мог понять, как этого добиться. Буду признателен за вашу помощь. - person Maulik Bhuptani; 09.06.2017

Этого можно добиться с помощью iOS-Charts. В настоящее время я работаю над проектом, который требует нескольких различных линейных диаграмм, нескольких столбчатых диаграмм и линейных диаграмм. Даже если у меня есть нулевые значения, метки оси X все еще там. Вы можете спросить меня, есть ли у вас сомнения.

person Itaws    schedule 29.05.2015
comment
ChartDataEntry (value: nil, xIndex: 0) - пример экземпляра, где значение равно nil. Как вам удалось добиться нулевого прохода без ошибок? Мне удалось решить указанную выше проблему, но мне любопытно, как вы это сделали. - person naz; 29.05.2015

Вот функция, которую я написал на основе ответа daniel.gindi (я передаю NaN для пустых записей в массиве значений):

func populateLineChartView(lineChartView: LineChartView, labels: [String], values: [Float]) {
    var dataEntries: [ChartDataEntry] = []

    for i in 0..<labels.count {
        if !values[i].isNaN {
            let dataEntry = ChartDataEntry(value: Double(values[i]), xIndex: i)
            dataEntries.append(dataEntry)
        }
    }

    let lineChartDataSet = LineChartDataSet(yVals: dataEntries, label: "Label")
    let lineChartData = LineChartData(xVals: labels, dataSet: lineChartDataSet)
    lineChartView.data = lineChartData
}
person Carl Smith    schedule 16.05.2016

Вы можете использовать максимальную ось, поэтому даже если у вас нет ChartDataEntry для этих событий, он все равно будет отображаться

   chartView.xAxis.axisMaximum = 60
   chartView.xAxis.axisMaximum = 90
person Tiago Mendes    schedule 11.03.2021