2017-10-07 40 views
1

我最近在我的條形圖中添加了「barChartData.groupBars(fromX:0,groupSpace:0.5,barSpace:0.03)」,這樣我就沒有重疊的條形,我可以「噸弄清楚如何設置寬度,以適應(無水平溢流)iOS-Charts分組條形圖的大小適合

enter image description here

func setupGroupedBarChartData(values1: [String], values2: [String], barLabel1: String, barLabel2: String, barColor1: UIColor, barColor2: UIColor) -> BarChartData { 
    let dataValues1 = values1.flatMap{ Double($0) } 
    let dataValues2 = values2.flatMap{ Double($0) } 

    var dataEntries1: [BarChartDataEntry] = [] 
    var dataEntries2: [BarChartDataEntry] = [] 

    for i in 0..<dataValues1.count { 
     let dataEntry1 = BarChartDataEntry(x: Double(i), y: dataValues1[i]) 
     dataEntries1.append(dataEntry1) 

     let dataEntry2 = BarChartDataEntry(x: Double(i), y: dataValues2[i]) 
     dataEntries2.append(dataEntry2) 
    } 

    let chartDataSet1 = BarChartDataSet(values: dataEntries1, label: barLabel1) 
    chartDataSet1.colors = [barColor1] 
    chartDataSet1.valueTextColor = AppColors.lightText 
    let chartDataSet2 = BarChartDataSet(values: dataEntries2, label: barLabel2) 
    chartDataSet2.colors = [barColor2] 
    chartDataSet2.valueTextColor = AppColors.lightText 

    var groupedDataSet : [BarChartDataSet] = [BarChartDataSet]() 
    groupedDataSet.append(chartDataSet1) 
    groupedDataSet.append(chartDataSet2) 

    let barChartData = BarChartData(dataSets: groupedDataSet) 
    barChartData.groupBars(fromX: 0, groupSpace: 0.5, barSpace: 0.03) 

    //display data as integer 
    let format = NumberFormatter() 
    format.generatesDecimalNumbers = false 
    let formatter = DefaultValueFormatter(formatter: format) 
    barChartData.setValueFormatter(formatter) 


    return barChartData 
} 
+0

嗨羅伯特,哪個庫您使用?我試圖實現類似的東西。謝謝。 – Ning

回答

2

可以使用這樣的:

你的計算將是象下面這樣:

// (barWidth + barSpace) * (no.of.bars) + groupSpace = 1.00 -> interval per "group" 

在您的代碼:

barChartData.groupBars(fromX: 0, groupSpace: 0.14, barSpace: 0.03) 
barChartData.barWidth = 0.4 

barChartView.xAxis.axisMinimum = 0 
barChartView.xAxis.axisMaximum = 23 
+0

感謝您的回答。我認爲我在正確的方向。 看看我的截圖。我應該從0(左邊緣)開始有12個組(而不是6個)。 https://imgur.com/ijNazSU –

+0

我實際上設法調整價值,直到它工作。真奇怪...... https://imgur.com/a/bdyaI barChartData.groupBars(fromX:-0.5,groupSpace:0.13,barSpace:-0.415) barChartData.barWidth = 0.41 –