2017-09-15 33 views
0

我设置具有上X轴一些值的CombinedChartView XAXIS值的顺序,可以说(15,16,17,2,3)继续使用的iOS图表框架

与这行代码

for i in 0..<gameStatsMonth.count { 

    let dataEntryTeam = ChartDataEntry(x: Double(gameStatsMonth[i].day!), y: Double(gameStatsMonth[i].points!)) 

    lineDataEntryTeam.append(dataEntryTeam) 
} 

它发生的值是在x轴显示的排序,这样的:2,3,15,16,17,

有任何的方式来保持x值的一阶? (顺序上与它们在lineDataEntryTeam插入)

+0

你看到这个答案https:// sta ckoverflow.com/questions/41979926/how-to-achieve-trackball-and-access-label-above-bar-on-bar-charts-in-swift-3x/42019505#42019505 –

回答

1

添加一个数组为X轴(您的功能外):

var xaxisVals = [Double]() 

更新您for

for i in 0..<gameStatsMonth.count { 
    let dataEntryTeam = ChartDataEntry(x: Double(gameStatsMonth[i].day!), y: Double(gameStatsMonth[i].points!)) 
    xaxisVals.append(Double(gameStatsMonth[i].day!)) 
    lineDataEntryTeam.append(dataEntryTeam) 
} 

采用IAxisValueFormatter

class YourViewController: UIViewController, IAxisValueFormatter 

填写委托方法:

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

在此类中,定义代表:

weak var axisFormatDelegate: IAxisValueFormatter? 

viewDidLoad设置委托给self

axisFormatDelegate = self 

后for循环中,设置X轴:

let xaxis = lineDataEntryTeam.xAxis 
xaxis.granularityEnabled = true 
xaxis.granularity = 1 
xaxis.valueFormatter = axisFormatDelegate