2016-11-06 16 views
5

biểu đồ, đây là mã của tôi:Làm thế nào để thêm "%" vào dữ liệu trong ios-biểu đồ

private func setChart(pieChartView: PieChartView, values: [Double]) { 

    var dataEntries: [PieChartDataEntry] = [] 

    let dataPoints = ["Mar","Apr","May"] 

    for i in 0..<dataPoints.count { 
     let dataEntry = PieChartDataEntry(value: values[i], label: dataPoints[i]) 
     dataEntries.append(dataEntry) 
    } 

    let pieChartDataSet = PieChartDataSet(values: dataEntries, label: "") 
    pieChartDataSet.colors = [UIColor(red: 47/255, green: 164/255, blue: 59/255, alpha: 1.0),UIColor(red: 17/255, green: 128/255, blue: 127/255, alpha: 1.0),UIColor.orange] 
    let pieChartData = PieChartData(dataSet: pieChartDataSet) 
    pieChartView.data = pieChartData 
    pieChartView.centerText = "Amount Spent" 
    pieChartView.chartDescription?.text = "" 
    pieChartView.usePercentValuesEnabled = true 
    pieChartView.legend.horizontalAlignment = .center 

} 

enter image description here

Làm thế nào để thêm "%" trong dữ liệu PieChart? NSNumberFormatter() là không còn có sẵn

--------------- GIẢI PHÁP ---------------

tôi đăng giải pháp này cho tất cả những người có cùng một vấn đề. tôi đã nhận nó từ biểu đồ-ios githup:

private func setChart(pieChartView: PieChartView, values: [Double]) { 

    var dataEntries = [ChartDataEntry]() 

    let dataPoints = ["Mar","Apr","May"] 

    for i in 0..<dataPoints.count { 
     let dataEntry = PieChartDataEntry(value: values[i], label: dataPoints[i]) 
     dataEntries.append(dataEntry) 
    } 

    let pieChartDataSet = PieChartDataSet(values: dataEntries, label: "") 
    let green = UIColor(red: 47/255, green: 164/255, blue: 59/255, alpha: 1.0) 
    let blue = UIColor(red: 17/255, green: 128/255, blue: 127/255, alpha: 1.0) 
    pieChartDataSet.colors = [green, blue, .orange] 
    let pieChartData = PieChartData(dataSet: pieChartDataSet) 
    let formatter = NumberFormatter() 
    formatter.numberStyle = .percent 
    formatter.maximumFractionDigits = 2 
    formatter.multiplier = 1.0 
    formatter.percentSymbol = "%" 
    pieChartData.setValueFormatter(DefaultValueFormatter(formatter: formatter)) 
    pieChartView.data = pieChartData 
    pieChartView.centerText = "Amount Spent" 
    pieChartView.chartDescription?.text = "" 
    pieChartView.usePercentValuesEnabled = true 
    pieChartView.legend.horizontalAlignment = .center 
    pieChartView.drawEntryLabelsEnabled = false 
    pieChartView.holeRadiusPercent = 0.55 
    pieChartView.highlightPerTapEnabled = false 
    pieChartView.animate(yAxisDuration: 2.0, easingOption: .easeInBack) 
} 
+0

Liệu nó làm việc? – Hasya

+0

Không, nhưng tôi đã cập nhật bài đăng của mình bằng đúng số – OuSS

+0

Bạn có thể trả lời câu hỏi của riêng mình. Nếu bạn đã đánh dấu là câu hỏi và câu trả lời sẽ đăng câu hỏi. – Hasya

Trả lời

2

enter image description here

Vui lòng tham khảo bên dưới mã, tôi đã thêm%.

import UIKit 

class ViewController: UIViewController { 


     @IBOutlet weak var pieChartView: PieChartView! 
     override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"] 
     let unitsSold = [20.0, 4.0, 6.0, 3.0, 12.0, 16.0] 

     setChart(months, values: unitsSold) 




    } 


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

     var dataEntries: [ChartDataEntry] = [] 

     for i in 0..<dataPoints.count { 
      let dataEntry = ChartDataEntry(value: values[i], xIndex: i) 
      dataEntries.append(dataEntry) 
     } 

     let pieChartDataSet = PieChartDataSet(yVals: dataEntries, label: "Units Sold") 

     let formatter = NSNumberFormatter() 
     formatter.numberStyle = .PercentStyle 
     formatter.maximumFractionDigits = 1 
     formatter.multiplier = 1.0 


     let pieChartData = PieChartData(xVals: dataPoints, dataSet: pieChartDataSet) 

     pieChartData.dataSet?.valueFormatter = formatter 


     pieChartView.data = pieChartData 

     pieChartView.holeColor = UIColor.clearColor() 

     // pieChartView.holeRadiusPercent = 0.95 

     pieChartView.centerText = "Hello\nThis is Pie chart" 

pieChartView.usePercentValuesEnabled = true 


     var colors: [UIColor] = [] 

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

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

     pieChartDataSet.colors = colors 




    } 



    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


} 

Hãy cho tôi biết nếu tôi có thể giúp bạn.

Có mã hóa vui vẻ.

+0

pieChartData.dataSet? .valueFormatter = formatter hiển thị lỗi do mức độ bảo vệ nội bộ như thế nào để quản lý nó? –

+0

Bạn có thể đã tải xuống gần đây từ Git, nó sẽ ở trong nhanh chóng 3.0, ví dụ trên và mã là trong nhanh chóng 2.2, Vì vậy, chỉ cần kiểm tra với thư viện làm thế nào để làm điều đó trong nhanh chóng 3,0. Kiểm tra http://stackoverflow.com/questions/37965016/how-to-show-percentage-sign-in-pie-chart-using-daniel-gindi-chart-library-in-swi/38101191#38101191 – Hasya

1

nếu bạn muốn thêm% trong trong đồ thị của bạn cũng như ẩn/loại bỏ 0,0 giá trị từ biểu đồ: # Swift 3 sử dụng dưới dòng mã: -

func updateChartData() { 

     let chart = PieChartView(frame: mViewOutlet.frame) 
//   let chart = PieChartView(frame: CGRect(x: 122, y: 235 , width: self.mViewOutlet.frame.size.width, height: self.mViewOutlet.frame.size.height)) 


     // 2. generate chart data entries 
     let track = ["Present","Leave", "EG/LC", "Halfday", "Absent", "Weeklyoff", "Holidays"] 
     //  let money = [65, 13, 10, 2] 
     let money = mDaysArray 

     var entries = [PieChartDataEntry]() 
     for (index, value) in money.enumerated() { 
      print("index: \(index) \n value: \(value)") 
      let entry = PieChartDataEntry() 

      if value != 0 { 
       entry.y = Double(value) 
      }else{ 

      } 
      entries.append(entry) 
//   entry.label = track[index] // if we want to remove name label 
     } 

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

     //4. set chart color 
     let presentColor = UIColor(red: 80.0/255.0, green: 180.0/255.0, blue: 50.0/255.0, alpha: 1.0) 
     //  let lateColor = UIColor(red: 241.0/255.0, green: 194.0/255.0, blue: 114.0/255.0, alpha: 1.0) 
     let leaveColor = UIColor(red: 203.0/255.0, green: 68.0/255.0, blue: 242.0/255.0, alpha: 1.0) 
     let egColor = UIColor(red: 95.0/255.0, green: 180.0/255.0, blue: 239.0/255.0, alpha: 1.0) 
     let halfdayColor = UIColor(red: 82.0/255.0, green: 64.0/255.0, blue: 152.0/255.0, alpha: 1.0) 
     let absentColor = UIColor(red: 242.0/255.0, green: 58.0/255.0, blue: 02.0/255.0, alpha: 1.0) 
     let weekOffColor = UIColor(red: 186.0/255.0, green: 221.0/255.0, blue: 79.0/255.0, alpha: 1.0) 
     let holidayColor = UIColor(red: 35.0/255.0, green: 215.0/255.0, blue: 179.0/255.0, alpha: 1.0) 

     let colors: [UIColor] = [presentColor,leaveColor,egColor,halfdayColor,absentColor,weekOffColor,holidayColor] 

     set.colors = colors 
     let data = PieChartData(dataSet: set) 

     let formatter = NumberFormatter() 
     formatter.numberStyle = .percent 
     formatter.maximumFractionDigits = 2 
     formatter.multiplier = 1.0 
     formatter.percentSymbol = "%" 
     formatter.zeroSymbol = "" 
     data.setValueFormatter(DefaultValueFormatter(formatter: formatter)) 

     chart.data = data 
     chart.noDataText = "No data available" 
     chart.usePercentValuesEnabled = true 
     // user interaction 
     chart.isUserInteractionEnabled = false 

     let d = Description() 
//  d.text = "iOSCharts.io" 
     chart.chartDescription = d 
//  chart.tintColor = UIColor.black 
//  chart.centerText = "Pie Chart" 

     chart.holeRadiusPercent = 0.2 
     chart.chartDescription?.enabled = false 
     chart.legend.enabled = false 

     chart.data?.notifyDataChanged() 
     chart.notifyDataSetChanged() 
     chart.setNeedsDisplay() 
     chart.animate(xAxisDuration: 1.3, yAxisDuration: 1.3) 

     chart.transparentCircleColor = UIColor.clear 
//  self.view.addSubview(chart) 
     self.mPieChartMainView.addSubview(chart) 
    } 
Các vấn đề liên quan