多折线图,不想绘制0值.斯威夫特2 [英] Multiple Line Chart, don't want to plot 0 values. Swift 2

查看:92
本文介绍了多折线图,不想绘制0值.斯威夫特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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆