【问题标题】:Pie chart using Charts library with swift使用带有 swift 的 Charts 库的饼图
【发布时间】:2016-12-17 09:20:42
【问题描述】:

我正在使用 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
  }
}

当运行应用程序时,我得到了这个

但我需要完整数据记录中的饼图,如下面的屏幕截图所示

【问题讨论】:

  • 两者一样吗?如果你想在图表中用你的 valye 打印月份名称,那么只需将它与你的值一起添加意味着在构建图表时附加你的文本值
  • 我已经在这一行附加了文本值初始化时间:let dataEntry1 = ChartDataEntry(x: Double(i), y: values[i], data: dataPoints[i] as AnyObject)跨度>
  • 使用来自 appcoda 的代码:appcoda.com/ios-charts-api-tutorial
  • 只打印你的附加数据dataEntry1
  • @Himanshu,我有打印数据并获取相应的值。

标签: ios charts swift3 core-graphics pie-chart


【解决方案1】:

更新这个问题。

  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)

}

【讨论】:

  • 有没有办法用数字显示百分号?
  • 如何将 JSON 数组分配给饼图?
【解决方案2】:

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

代替

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

试试这个

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

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

希望这能让你走上正轨

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    相关资源
    最近更新 更多