2017-09-11 12 views
2

リアルタイムのデータが変更された横棒グラフを取得しようとしています。私はこの問題を抱えています。iOSチャート、水平バーが正確でない

enter image description here

あなたはすべてのバーが最長1を除いて不正確で見ることができるように。

以下、私のコードです。

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 = "" 
} 
関連する問題