Столбчатые диаграммы IOS - Как отображать метки значений (1.0,2.0 и т. Д.) На линейчатой ​​диаграмме и отображать конкретные значения (например, 3 - 7) на свитке линейчатой ​​диаграммы - PullRequest
0 голосов
/ 11 мая 2018

Я работаю над линейчатой ​​диаграммой в iOS Swift

chart chart

Код:

let chartDataSet: BarChartDataSet!
chartDataSet = BarChartDataSet(values: dataEntries, label: "Rupee  Date-->")
chartDataSet.colors = [AppColors.barChartColor]
chartDataSet.highlightColor = AppColors.barChartHighlightColor
chartDataSet.valueTextColor = UIColor.black
chartDataSet.values = dataEntries
let chartData = BarChartData(dataSet: chartDataSet)
chartData.setDrawValues(true)
cell.barChartView.drawValueAboveBarEnabled = true
cell.barChartView.xAxis.valueFormatter = IndexAxisValueFormatter(values:monthDateArray as! [String])
cell.barChartView.animate(xAxisDuration: 1.0, yAxisDuration: 1.0)
cell.barChartView.data = chartData
cell.barChartView.xAxis.granularity = 1.0
cell.barChartView.setVisibleXRange(minXRange: 7, maxXRange: 7)
cell.barChartView.leftAxis.axisMinimum = 0
cell.barChartView.drawValueAboveBarEnabled = true

Вопросы

  1. Как отобразить значения над барами, например 4,0, 3,0 и т. Д.
  2. Бар всегда открывается в 0 позиции. Я хочу, чтобы бар всегда открывался в текущей позиции даты, а при прокрутке мы можем показать все данные.

Ответы [ 2 ]

0 голосов
/ 03 августа 2018

Ответ на вопрос 1

Мистером Махаджаном и некоторыми другими с этой функциональностью: -

Код:

 cell.barChartView.xAxis.valueFormatter = IndexAxisValueFormatter(values:monthDateArray as! [String])
 cell.barChartView.animate(xAxisDuration: 1.0, yAxisDuration: 1.0)
 cell.barChartView.xAxis.granularity = 1.0
 cell.barChartView.setVisibleXRange(minXRange: 7, maxXRange: 7)
 cell.barChartView.leftAxis.axisMinimum = 0
 cell.barChartView.xAxis.granularityEnabled = true
 cell.barChartView.xAxis.drawGridLinesEnabled = false                
 cell.barChartView.xAxis.labelPosition = .bottom
 cell.barChartView.chartDescription?.text = ""  
 cell.barChartView.rightAxis.enabled = false
 cell.barChartView.animate(xAxisDuration: 2.0, yAxisDuration: 2.0, easingOption: .easeInOutQuart)

Ответ на вопрос 2

Код:

            let date = Date()
            let formatter = DateFormatter()
            formatter.dateFormat = "dd"
            let result = formatter.string(from: date)
            var myDoubleX = Double(result)
            myDoubleX = myDoubleX! - 1.5  
            cell.barChartView.moveViewToX(myDoubleX!)
0 голосов
/ 14 мая 2018

Попробуйте это расширение: -

//Bar chart extensio to set custom xAxia and yAxis
extension BarChartView {

private class BarChartFormatter: NSObject, IAxisValueFormatter {

    var labels: [String] = []

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

    init(labels: [String]) {
        super.init()
        self.labels = labels
    }
}

func setBarChartData(xValues: [String], yValues: [String], label: String) {

    var dataEntries: [BarChartDataEntry] = []

    for i in 0..<yValues.count {
        let dataEntry = BarChartDataEntry(x: Double(i), y: Double(yValues[i])!)
        dataEntries.append(dataEntry)
    }

    let chartDataSet = BarChartDataSet(values: dataEntries, label: label)
    chartDataSet.colors = [NSUIColor(red: 0/255.0, green: 110/255.0, blue: 194/255.0, alpha: 1.0)]
    chartDataSet.valueFont = NSUIFont.systemFont(ofSize: 13)

    let chartData = BarChartData(dataSet: chartDataSet)
    let chartFormatter = BarChartFormatter(labels: xValues)
    let xAxis = XAxis()
    xAxis.valueFormatter = chartFormatter
    self.xAxis.valueFormatter = xAxis.valueFormatter
    self.drawValueAboveBarEnabled = true

    self.data = chartData
}
}

Вызов функции: -

@IBOutlet var chartView: BarChartView! 
...
chartView.setBarChartData(xValues: dates, yValues: Leads, label: "Leads")

Где даты и Leads - это массив строк

...