IOS条形图 - 如何在条形图和&amp ;;上显示值(1.0,2.0等)标签在条形图滚动条上显示特定值(如3 - 7)

时间:2018-05-11 10:49:23

标签: ios swift bar-chart

我在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 :(得分:1)

试用此扩展程序: -

//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")

其中日期和潜在客户是字符串数组

答案 1 :(得分:0)

问题1的答案

由Mahajan Code先生和一些具有此功能的人组成:-

代码:

 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!)