首页 > 解决方案 > Swift - 以编程方式创建图表(条形图、折线图、饼图、柱形图)

问题描述

我正在使用https://github.com/danielgindi/Charts框架。根据教程,我们必须为视图创建一个出口,然后将其归类为相应的图表视图。所以我创建了 4 个网点并成功加载了图表。我只想为所有图表使用一个插座。我在表格视图中显示图表。那么我可以对所有图表重用一个视图吗?我尝试调用 init() 方法。但是,init() 方法不适用于所有图表。另外,我也尝试过给框架,但失败了。请帮忙。

标签: iosswiftcharts

解决方案


在您查看更多图表文档之后,您可能会例如制作折线图LineChartView(),您可以使用不同的更新函数来更改它的外观,例如这是我的一个:

func lineChartUpdate(dataPoints: [String], values: [Double]) {

    //Graph data management
    var lineChartEntry = [ChartDataEntry]()

    for i in 0..<prices.count {

        //Graph marker from extension

        if prices != [] {

            let value = ChartDataEntry(x: Double(i), y: values[i])
            lineChartEntry.append(value)

            let line1 = LineChartDataSet(values: lineChartEntry, label: "Price")

            line1.setColor(.white)
            line1.drawVerticalHighlightIndicatorEnabled = false
            line1.drawHorizontalHighlightIndicatorEnabled = false
            line1.mode = .cubicBezier
            line1.lineWidth = 2.0
            line1.drawValuesEnabled = true
            line1.valueTextColor = UIColor.white
            line1.drawCirclesEnabled = false

            chartView.xAxis.valueFormatter = IndexAxisValueFormatter(values:self.days)
            chartView.xAxis.granularity = 1
            chartView.leftAxis.drawGridLinesEnabled = false
            chartView.xAxis.drawGridLinesEnabled = false
            //Expanded

            chartView.rightAxis.enabled = false
            chartView.leftAxis.enabled = false
            chartView.xAxis.enabled = false

            chartView.rightAxis.drawGridLinesEnabled = false
            chartView.legend.enabled = false

            chartView.dragEnabled = false
            chartView.pinchZoomEnabled = false
            chartView.drawMarkers = false
            chartView.doubleTapToZoomEnabled = false

                self.chartView.isUserInteractionEnabled = true

            //Graph Data.

                let data = LineChartData()
                data.addDataSet(line1)
                self.chartView.data = data
            self.chartLoaded = true 

        }

    }

}

如果您希望一个视图能够充当条形图和折线图,则在同一位置为每种类型设置一个视图可能会更容易,并且您可以将条形图视图更改为任何类型的您想要的条形图并对其进行更新以尽可能多地重复使用视图,但是当您需要折线图时,只需隐藏该视图并改用折线图。


推荐阅读