2016-10-10 16 views
5

Film şeridine bar chart ekledim, ancak veri girişlerim için etiketleri doğru şekilde ayarlayamıyorum.ios-grafiklerde BarChartView için XAxis için etiketler nasıl eklenir?

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

setChart(dataPoints: names, values: values) 

setChart fonksiyonu:

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 
} 

ve son olarak biçimlendirici: Burada

benim kodudur

@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 
    } 
} 

ama aşağıda gösterildiği gibi de işe yaramadı:

Burada gösterildiği gibi 6 etiket yerine 4 etiket eklenir ve ayrıca iki kopyası da vardır.

Zaten this solution'u okudum, ancak görebileceğiniz gibi, henüz bazı sorunlar var.

Bu sorunu nasıl çözebilirim?

cevap

9

Ben aşağıdaki özellikleri ayarlamayı deneyebilirsiniz düşünüyorum:

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 

kaynak kodu size yukarıdaki özellikleri hakkında çok şey anlatır. https://github.com/danielgindi/Charts/blob/master/Source/Charts/Components/AxisBase.swift

+0

Bu benim için çalışmaz. lütfen [problem] bölümüne bakın (https://stackoverflow.com/questions/46618636/how-to-add-string-labels-xaxis-labels-to-horizontal-bar-in-charts-framework) –

İlgili konular