Frage Wie Sie Labels für XAxis für BarChartView in Ios-Charts hinzufügen


Ich habe eine hinzugefügt Balkendiagramm auf das Storyboard, aber ich kann die Labels für meine Dateneinträge nicht richtig setzen.

Hier ist mein Code:

var names = ["aaa", "bbb", "ccc", "ddd"]
var values = [230.0, 280.0, 450.0, 340.0]

setChart(dataPoints: names, values: values)

setChart Funktion:

func setChart(dataPoints: [String], values: [Double])
{
    let formatter = BarChartFormatter()
    formatter.setValues(values: dataPoints)
    let xaxis:XAxis = XAxis()


    barChartView.noDataText = "You need to provide data for the chart."
    var dataEntries: [BarChartDataEntry] = []

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

    let chartDataSet = BarChartDataSet(values: dataEntries, label: "موجودی")

    let chartData = BarChartData(dataSet: chartDataSet)


    xaxis.valueFormatter = formatter
    barChartView.xAxis.labelPosition = .bottom
    barChartView.xAxis.drawGridLinesEnabled = false
    barChartView.xAxis.valueFormatter = xaxis.valueFormatter
    barChartView.chartDescription?.enabled = false
    barChartView.legend.enabled = true
    barChartView.rightAxis.enabled = false
    barChartView.data = chartData
}

und schließlich der Formatierer:

@objc(BarChartFormatter)
public class BarChartFormatter: NSObject, IAxisValueFormatter
{
    var names = [String]()

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

    public func setValues(values: [String])
    {
        self.names = values
    }
}

aber es hat nicht gut funktioniert, wie unten gezeigt:

enter image description here

Wie hier gezeigt, fügen Sie 6 Labels statt 4 Labels hinzu, und es hat auch Duplikate.

Ich lese schon diese LösungWie Sie jedoch sehen können, gibt es noch einige Probleme.

Wie kann ich dieses Problem lösen?


5
2017-10-10 14:11


Ursprung


Antworten:


Ich denke, Sie können versuchen, die folgenden Eigenschaften festzulegen:

barChartView.xAxis.granularityEnabled = true
barChartView.xAxis.granularity = 1.0 //default granularity is 1.0, but it is better to be explicit
barChartView.xAxis.decimals = 0

Der Quelltext sagt viel über die oben genannten Eigenschaften aus. https://github.com/danielgindi/Charts/blob/master/Source/Charts/Components/AxisBase.swift


9
2017-10-10 15:03