2017-09-11 6 views
2

실시간 데이터가 변경된 가로 막 대형 차트를 얻으려고합니다. 나는이 문제를 가지고있다.iOS 차트, 가로 막대가 정확하지 않습니다.

enter image description here

모든 막대가 긴 하나를 제외하고 부정확 볼 수 있습니다.

다음 코드는 내 코드입니다.

class HorizontalBarChartViewController: UIViewController { 

var values: [Double] = [0.0, 0.0, 0.0, 0.0, 0.0] 
var moods = ["Annoiato", "Ansioso", "Stanco", "Triste", "Altro"] 

@IBOutlet weak var chart: HorizontalBarChartView! 

func updateCharts() { 
    var chartDataEntry = [BarChartDataEntry]() 

    for i in 0..<values.count { 
     let value = BarChartDataEntry(x: Double(i), y: values[i]) 
     chartDataEntry.append(value) 
    } 

    let chartDataSet = BarChartDataSet(values: chartDataEntry, label: "Sigarette fumate") 
    chartDataSet.drawValuesEnabled = false 
    chartDataSet.colors = [NSUIColor.green] 

    let chartMain = BarChartData() 
    chartMain.barWidth = 0.1 

    chartMain.addDataSet(chartDataSet) 
    chart.animate(yAxisDuration: 0.5) 
    chart.data = chartMain 
} 

func configureCharts() { 
    chart.xAxis.valueFormatter = IndexAxisValueFormatter(values: moods) 
    chart.xAxis.granularity = 1.0 
    chart.xAxis.labelPosition = .bottom 
    chart.xAxis.drawGridLinesEnabled = false 

    chart.leftAxis.enabled = false 
    chart.rightAxis.granularity = 1.0 
    chart.rightAxis.axisMinimum = 0.0 


    guard let description = chart.chartDescription else {return} 
    description.text = "" 
} 

}

는 값을 증가시키기 위해, 나는 모든 값이 기능의 5 각이있어 :

@IBAction func *nameValue*Button(_ sender: UIButton) { 
    values[*index*]+=1 
    updateCharts() 
    configureCharts() 
} 

가 어떻게 올바른 그리드 선으로 막대를 일치시킬 수 있습니다 오른쪽 y 축?

+0

ios-charts를 사용하면 가장 좋은 디버깅은 렌더러에 중단 점을 넣고 거기에 그려지는 이유와 그 이유를 직접 확인하는 것입니다. – Sulthan

답변

1

여기 해결책이 있습니다. 다음을 확인하십시오 :

func configureCharts() { 
    chart.xAxis.valueFormatter = IndexAxisValueFormatter(values: moods) 
    chart.xAxis.granularity = 1.0 
    chart.xAxis.labelPosition = .bottom 
    chart.xAxis.drawGridLinesEnabled = false 

    chart.rightAxis.granularity = 1.0 
    chart.rightAxis.axisMinimum = 0.0 
    chart.leftAxis.axisMinimum = 0.0 //here's the missing line 

    guard let description = chart.chartDescription else {return} 
    description.text = "" 
}