隐藏LineChart数据集。 Swift iOS

如何将折线图数据集设置为在加载时禁用

我正在使用图表框架(danielgindi / Charts)。

我想要一个lineChartView,其中包含3种不同的Data,可以使用按钮隐藏或显示它们。

例如已敲击button1将在lineChartView上显示/不显示,但仍显示其他2种不同的数据。


class ViewController: UIViewController {

    @IBOutlet weak var chartView: LineChartView!

    var limitSet1 : ChartLimitLine?
    var limitSet2 : ChartLimitLine?
    var limitSet3 : ChartLimitLine?
    var limitLineArray : [Double] = []

    func removeLimitLines() {
        switch (limitLineArray.count) {
        case 1: print("there was 1 limit line,need to remove this from chart view")
        chartView.rightAxis.removeLimitLine(limitSet1!)
        case 2: print("there was 2 limit line,need to remove this from chart view")
        chartView.rightAxis.removeLimitLine(limitSet1!)
        chartView.rightAxis.removeLimitLine(limitSet2!)
        case 3: print("there was 3 limit line,need to remove this from chart view")
        chartView.rightAxis.removeLimitLine(limitSet1!)
        chartView.rightAxis.removeLimitLine(limitSet2!)
        chartView.rightAxis.removeLimitLine(limitSet3!)
        default:
            break
        }
    }

    func setChart(xValues: [String],valuesLineChart: [[Double]],limitLines: [Double]) {
//        chartView.descriptionText = ""
        chartView.noDataText = "You need to provide data for the chart."

        print("valuesLineChart has \(valuesLineChart.count) lines")

        var dataSets : [LineChartdataset] = [LineChartdataset]()

        switch valuesLineChart.count {

        case 1 : print("1 within switch")

        var yVals1 : [ChartDataEntry] = [ChartDataEntry]()
        for i in 0..<xValues.count {
            yVals1.append(ChartDataEntry(x: valuesLineChart[0][i],y: Double(i)))
        }

        let set1 = LineChartdataset(entries: yVals1,label: nil)
        dataSets.append(set1)

        //limit lines
        limitSet1 = ChartLimitLine(limit: limitLines[0],label: "switch1,limit1")
        chartView.rightAxis.addLimitLine(limitSet1!)

        case 2 :print("2 within switch")

        var yVals1 : [ChartDataEntry] = [ChartDataEntry]()
        for i in 0..<xValues.count {
            yVals1.append(ChartDataEntry(x: valuesLineChart[0][i],y: Double(i)))
        }

        var yVals2 : [ChartDataEntry] = [ChartDataEntry]()
        for i in 0..<xValues.count {
            yVals2.append(ChartDataEntry(x: valuesLineChart[1][i],label: nil)
        let set2 = LineChartdataset(entries: yVals2,label: nil)

        dataSets.append(set1)
        dataSets.append(set2)

        //limit lines
        limitSet1 = ChartLimitLine(limit: limitLines[0],label: "")
        limitSet2 = ChartLimitLine(limit: limitLines[1],label: "")

        chartView.rightAxis.addLimitLine(limitSet1!)
        chartView.rightAxis.addLimitLine(limitSet2!)


        case 3 :print("3 within switch")

        var yVals1 : [ChartDataEntry] = [ChartDataEntry]()
        for i in 0..<xValues.count {
            yVals1.append(ChartDataEntry(x: valuesLineChart[0][i],y: Double(i)))
        }

        var yVals3 : [ChartDataEntry] = [ChartDataEntry]()
        for i in 0..<xValues.count {
            yVals3.append(ChartDataEntry(x: valuesLineChart[2][i],label: nil)
        let set3 = LineChartdataset(entries: yVals3,label: nil)

        dataSets.append(set1)
        dataSets.append(set2)
        dataSets.append(set3)

        //limit lines
        limitSet1 = ChartLimitLine(limit: limitLines[0],label: "")
        limitSet3 = ChartLimitLine(limit: limitLines[2],label: "")

        chartView.rightAxis.addLimitLine(limitSet1!)
        chartView.rightAxis.addLimitLine(limitSet2!)
        chartView.rightAxis.addLimitLine(limitSet3!)
        default:
            break
        }
       let chartData = LineChartData( dataSets: dataSets)
        chartView.data = chartData
    }

jiesite 回答:隐藏LineChart数据集。 Swift iOS

一个技巧是使用多个数据集来实现这一点。单击按钮时,只需刷新数据集。

var dataSetArray = []
switch btn {
case btn1:
    btn1.isSelected = !btn1.isSelected
    if btn1.isSelected {
        dataSetArray.append(1)
    }
case btn2:
    btn2.isSelected = !btn2.isSelected
    if btn2.isSelected {
        dataSetArray.append(2)
    }
case btn3:
    btn3.isSelected = !btn3.isSelected
    if btn3.isSelected {
        dataSetArray.append(3)
    }
}

//Add the dataSet
....
chartView.data = xxx

希望这会有所帮助

本文链接:https://www.f2er.com/3154021.html

大家都在问