Библиотека диаграмм iOS, почему моя функция Bar/PieChart имеет только набор данных, но не xVals

Я использую платформу Daniel IOS Chart и Xcode7.3.1. Я прошел базовый учебник и попытался настроить первый пример.

Проблема в том, что я не могу назначить метку строки оси X

Я вижу в учебнике, когда мы назначаем данные на диаграмму, мы должны использовать

let chartData = BarChartData(xVals: dataPoints, dataSet: chartDataSet)

чтобы выполнить последний шаг, но ниже то, что я вижу здесь.

Нет такого параметра, как «xVals», но доступен только «набор данных».

У кого-нибудь есть идея? введите здесь описание изображения

Результатом будет просто гистограмма без какой-либо метки оси x, как показано ниже введите здесь описание изображения


person Nevermore    schedule 31.08.2016    source источник


Ответы (2)


Итак, вот пример функции для линейного графика:

  func setLineChart(dataPoints: [Double], chartInfo: String, chartDescription: String) {

    let formatter:ChartFormatter = ChartFormatter()
    let xaxis:XAxis = XAxis()

    var dataEntries: [ChartDataEntry] = Array()

    for i in 0..<dataPoints.count {
        let dataEntry = ChartDataEntry(x: Double(i), y: dataPoints[i])
        dataEntries.append(dataEntry)
        formatter.stringForValue(Double(i), axis: xaxis)
    }

    let lineChartDataSet = LineChartDataSet(values: dataEntries, label: chartInfo)
    let lineChartData = LineChartData(dataSet: lineChartDataSet)

    xaxis.valueFormatter = formatter
    lineChartView.xAxis.valueFormatter = xaxis.valueFormatter

    lineChartDataSet.mode = .CubicBezier
    lineChartDataSet.drawCirclesEnabled = false

    lineChartView.descriptionText = chartDescription
    lineChartView.data = lineChartData
    }

Вот форматер:

    @objc(ChartFormatter)
    public class ChartFormatter: NSObject, IAxisValueFormatter{

       var days: [String] = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]

       public func stringForValue(value: Double, axis: AxisBase?) -> String{
       return days[Int(value)]
}
}

И, наконец, вызов функции:

  override func viewDidLoad() {
    super.viewDidLoad()

       let values: [Double] = [1.0, 4.0, 1.5, 1.4, 1.3, 1.0, 3.0]
       let chartInfo = "chart info"
       let chartDescription = "chart description"

       self.setLineChart(values, chartInfo: chartInfo, chartDescription: chartDescription
}

так что, наконец, вы получите что-то вроде этого:

диаграмма

person Otar    schedule 02.09.2016
comment
Спасибо, что поделились. Это превосходно. Могу ли я задать дополнительный вопрос, например, как скрыть сетку оси X и оси Y? Также как переключать значения, как показано в демо. - person Nevermore; 13.10.2016
comment
Последнее, как я могу масштабировать эту диаграмму, если количество моих данных меньше, чем количество по оси x. Я хочу показать всю ось X с линией, просто заполнив часть диаграммы - person Nevermore; 13.10.2016

Похоже, вы используете старые учебники! Поскольку приближается Swift 3, разработчики этих диаграмм изменили библиотеку ... в соответствии с ними нам придется использовать специальные средства форматирования, чтобы установить, например, значения типа String на ось X. Итак, теперь у вас есть метод, который принимает только один параметр вместо двух:

 let barChartData = BarChartData(dataSet: chartDataSet)
 let lineChartData = LineChartData(dataSet: lineChartDataSet)

Дополнительную информацию вы можете найти здесь: https://github.com/danielgindi/Charts/issues/1340< /а>

person Otar    schedule 02.09.2016
comment
Спасибо за вашу ссылку. Я шаг за шагом следил за этим случаем, но, к сожалению, я все еще не могу получить значение xaxis с помощью форматирования. У вас есть полный пример, которым вы могли бы поделиться со мной? Я не уверен, где я был неправ. - person Nevermore; 02.09.2016