ios 快速使用图表库的饼图

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/41197122/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 10:57:46  来源:igfitidea点击:

Pie chart using Charts library with swift

ioschartsswift3core-graphicspie-chart

提问by Raj Joshi

I am integrating pie chart in my app using Chartslibrary and getting issue with chart data my code is

我正在使用Charts库在我的应用程序中集成饼图,并遇到我的代码的图表数据问题

import UIKit
import Charts
class ViewController: UIViewController {
 @IBOutlet weak var pieChartView: PieChartView!
    override func viewDidLoad() {
        super.viewDidLoad()
        let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
        let unitsSold = [10.0, 4.0, 6.0, 3.0, 12.0, 16.0]
        setChart(dataPoints: months, values: unitsSold)

    }


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

var dataEntries: [ChartDataEntry] = []

for i in 0..<dataPoints.count {
    let dataEntry1 = ChartDataEntry(x: Double(i), y: values[i], data: dataPoints[i] as AnyObject)

    dataEntries.append(dataEntry1)
}
print(dataEntries[0].data)
let pieChartDataSet = PieChartDataSet(values: dataEntries, label: "Units Sold")
let pieChartData = PieChartData(dataSet: pieChartDataSet)
pieChartView.data = pieChartData

var colors: [UIColor] = []

for _ in 0..<dataPoints.count {
    let red = Double(arc4random_uniform(256))
    let green = Double(arc4random_uniform(256))
    let blue = Double(arc4random_uniform(256))

    let color = UIColor(red: CGFloat(red/255), green: CGFloat(green/255), blue: CGFloat(blue/255), alpha: 1)
    colors.append(color)
}

pieChartDataSet.colors = colors
}
}

and when run app I getting something this
enter image description here

当运行应用程序时,我得到了这样的东西
在此处输入图片说明

but I need pie chart in full data records like in below screen shot enter image description here

但我需要完整数据记录中的饼图,如下面的屏幕截图 在此处输入图片说明

采纳答案by Devster101

The reason all the information isn't showing up is because you are using a parent initialiser when creating the entry point.

未显示所有信息的原因是您在创建入口点时使用了父初始化程序。

Instead of

代替

let dataEntry1 = ChartDataEntry(x: Double(i), y: values[i], data: dataPoints[i] as AnyObject)

try this instead

试试这个

let dataEntry1 = PieChartDataEntry(value: Double(i), label: dataPoints[i], data:  dataPoints[i] as AnyObject)

The PieChartDataEntry is specifically for Pie charts so you should see the month show up in the chart.

PieChartDataEntry 专门用于饼图,因此您应该会看到图表中显示的月份。

Hopefully this gets you on the right track

希望这能让你走上正轨

回答by Raj Joshi

Update for this question.

更新此问题。

  func updateChartData()  {

    let chart = PieChartView(frame: self.view.frame)
    // 2. generate chart data entries
    let track = ["Income", "Expense", "Wallet", "Bank"]
    let money = [650, 456.13, 78.67, 856.52]

    var entries = [PieChartDataEntry]()
    for (index, value) in money.enumerated() {
        let entry = PieChartDataEntry()
        entry.y = value
        entry.label = track[index]
        entries.append( entry)
    }

    // 3. chart setup
    let set = PieChartDataSet( values: entries, label: "Pie Chart")
    // this is custom extension method. Download the code for more details.
    var colors: [UIColor] = []

    for _ in 0..<money.count {
        let red = Double(arc4random_uniform(256))
        let green = Double(arc4random_uniform(256))
        let blue = Double(arc4random_uniform(256))
        let color = UIColor(red: CGFloat(red/255), green: CGFloat(green/255), blue: CGFloat(blue/255), alpha: 1)
        colors.append(color)
    }
    set.colors = colors
    let data = PieChartData(dataSet: set)
    chart.data = data
    chart.noDataText = "No data available"
    // user interaction
    chart.isUserInteractionEnabled = true

    let d = Description()
    d.text = "iOSCharts.io"
    chart.chartDescription = d
    chart.centerText = "Pie Chart"
    chart.holeRadiusPercent = 0.2
    chart.transparentCircleColor = UIColor.clear
    self.view.addSubview(chart)

}