多折线图,不想绘制0值.斯威夫特2 [英] Multiple Line Chart, don't want to plot 0 values. Swift 2
问题描述
我正在使用ios-charts库生成多个折线图. (danielgindi/图表).我正在为从核心数据中检索的x轴创建一个数组,如果x周没有值,我会附加一个0.
I am generating a multiple line chart using ios-charts library. (danielgindi/Charts). I am creating an array to for the x-axsis which is retrieved from Core Data and if there is no value for x week, i appended a 0.
我有一个示例数组(用于x值):
I have an example array of (for the x values):
[[0.0,0.0,5.6,3.0,6.0,5.4,2.1,0.0,0.0,1.3,4.1,0.0],[5.2,0.0,3.2,7.0,8.9,0.0,5.0,0.0,4.6,0.0 ,0.0,0.0],[3.6,1.5,3.6,0.0,0.0,3.5,0.0,4.6,5.6,2.8,8.4,0.0]]
[[0.0,0.0,5.6,3.0,6.0,5.4,2.1,0.0,0.0,1.3,4.1,0.0],[5.2,0.0,3.2,7.0,8.9,0.0,5.0,0.0,4.6,0.0,0.0,0.0],[3.6,1.5,3.6,0.0,0.0,3.5,0.0,4.6,5.6,2.8,8.4,0.0]]
,对于y:
[一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月]
[Jan,Feb,March,April,May,June,July,August,Sept,Oct,Nov,Dec]
我有以下代码在折线图中显示这3条线:
I have the following code to display these 3 lines within a line chart:
func setChart(xValues: [NSDate], valuesLineChart: [[Double]]) {
chartView.descriptionText = ""
chartView.noDataText = "You need to provide data for the chart."
var dataSets : [LineChartDataSet] = [LineChartDataSet]()
var yVals1 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals1.append(ChartDataEntry(value: valuesLineChart[0][i], xIndex: i))
}
var yVals2 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals2.append(ChartDataEntry(value: valuesLineChart[1][i], xIndex: i))
}
var yVals3 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
yVals3.append(ChartDataEntry(value: valuesLineChart[2][i], xIndex: i))
}
let set1 = LineChartDataSet(yVals: yVals1, label: nil)
let set2 = LineChartDataSet(yVals: yVals2, label: nil)
let set3 = LineChartDataSet(yVals: yVals3, label: nil)
set1.fillColor = UniversalStatic.data.colourArrayForGraph[0]
set2.fillColor = UniversalStatic.data.colourArrayForGraph[1]
set3.fillColor = UniversalStatic.data.colourArrayForGraph[2]
dataSets.append(set1)
dataSets.append(set2)
dataSets.append(set3)
set1.setColor(UniversalStatic.data.colourArrayForGraph[0])
set2.setColor(UniversalStatic.data.colourArrayForGraph[1])
set3.setColor(UniversalStatic.data.colourArrayForGraph[2])
set1.lineWidth = 2
set2.lineWidth = 2
set3.lineWidth = 2
set1.setCircleColor(UniversalStatic.data.colourArrayForGraph[0])
set2.setCircleColor(UniversalStatic.data.colourArrayForGraph[1])
set3.setCircleColor(UniversalStatic.data.colourArrayForGraph[2])
set1.drawCircleHoleEnabled = false
set2.drawCircleHoleEnabled = false
set3.drawCircleHoleEnabled = false
set1.circleRadius = 5.0
set2.circleRadius = 5.0
set3.circleRadius = 5.0
let data: CombinedChartData = CombinedChartData(xVals: xValues)
data.lineData = LineChartData(xVals: xValues, dataSets: dataSets)
chartView.data = data
}
如何避免绘制0个值?
感谢您的帮助
推荐答案
您是否要完全跳过0.0值?您可以在将它们附加到数组之前进行检查.
Are you looking to skip the 0.0 values entirely? You can check before appending them to the array.
也许您可以这样做:
var yVals1 : [ChartDataEntry] = [ChartDataEntry]()
for i in 0..<xValues.count {
if valuesLineChart[0][i] != 0.0 {
yVals1.append(ChartDataEntry(value: valuesLineChart[0][i], xIndex: i))
}
}
与其他for循环类似
这篇关于多折线图,不想绘制0值.斯威夫特2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!