如何解决如果值为0%,如何从图表中删除标签
我正在使用iOS图显示此图像 我知道值来自标签,但我需要从图表中隐藏零标签,但不能从下面的description.I中尝试将标签上的内容传递为空,但这不会使其动态。 我想要的是 ->如果为零,则不应在饼图上生成标签
func pieChartUpdate () {
//future home of pie chart code
HalfPieChartView.delegate = self
HalfPieChartView.holeColor = .white
HalfPieChartView.transparentCircleColor = NSUIColor.white.withAlphaComponent(0.43)
HalfPieChartView.holeRadiusPercent = 0.58
HalfPieChartView.rotationEnabled = false
HalfPieChartView.highlightPerTapEnabled = true
HalfPieChartView.maxAngle = 180 // Half chart
HalfPieChartView.rotationAngle = 180 // Rotate to make the half on the upper side
HalfPieChartView.centerTextOffset = CGPoint(x: 0,y: -20)
let entry1 = PieChartDataEntry(value: Double(pieProdPer),label: "Productive")
let entry2 = PieChartDataEntry(value: Double(pieUnProdPer),label: "Unproductive")
let entry3 = PieChartDataEntry(value: Double(pieNeutralPer),label: "Neutral")
let dataSet = PieChartDataSet(entries: [entry1,entry2,entry3],label: "")
dataSet.sliceSpace = 3
dataSet.selectionShift = 5
let prodcolor = NSUIColor(red: 72/255.0,green: 195/255.0,blue: 252/255.0,alpha: 1.0)
let unprodcolor = NSUIColor(red: 255/255.0,green: 125/255.0,blue: 139/255.0,alpha: 1.0)
let neutralcolor = NSUIColor(red: 228/255.0,green: 228/255.0,blue: 228/255.0,alpha: 1.0)
dataSet.colors = [prodcolor,unprodcolor,neutralcolor]
let data = PieChartData(dataSet: dataSet)
let pFormatter = NumberFormatter()
pFormatter.numberStyle = .percent
pFormatter.maximumFractionDigits = 1
pFormatter.multiplier = 1
pFormatter.percentSymbol = " %"
//using zeroSymbol i can remove number from chart
pFormatter.zeroSymbol = ""
data.setValueFormatter(DefaultValueFormatter(formatter: pFormatter))
data.setValueFont(NSFont(name: "Open Sans",size: 11)!)
data.setValueTextColor(.white)
HalfPieChartView.data = data
HalfPieChartView.chartDescription?.text = ""
//All other additions to this function will go here
//This must stay at end of function
HalfPieChartView.notifyDataSetChanged()
}
半圆形饼图
解决方法
您可以尝试使用@JoakimDanielson的注释,例如,如果值为0,则不将条目添加到dataSet中。您可以检查带有静态数据数组的示例
代码:
import UIKit
import Charts
class PieViewController: UIViewController {
@IBOutlet weak var pieChartView: PieChartView!
override func viewDidLoad() {
super.viewDidLoad()
let months = ["Jan","Feb","Mar","Apr","May","Jun"]
let unitSold = [6.0,8.0,26.0,0.0,10.0]
setChart(dataPoints: months,values: unitSold.map{ Double($0) })
}
func setChart(dataPoints: [String],values: [Double]) {
//Set ChartDataEntry
var dataEntries: [ChartDataEntry] = []
for i in 0..<dataPoints.count {
//if value is 0 not adding to array of dataEntries
if values[i] != 0 {
let dataEntry = PieChartDataEntry(value: values[i],label: dataPoints[i],data: dataPoints[i] as AnyObject)
dataEntries.append(dataEntry)
}
}
//Set ChartDataSet
let pieChartDataSet = PieChartDataSet(entries: dataEntries,label: nil)
pieChartDataSet.colors = colorsOfCharts(numbersOfColor: dataPoints.count)
//Set ChartData
let pieChartData = PieChartData(dataSet: pieChartDataSet)
let format = NumberFormatter()
format.numberStyle = .none
let formatter = DefaultValueFormatter(formatter: format)
pieChartData.setValueFormatter(formatter)
//Assign it to the chart’s data
pieChartView.data = pieChartData
}
//colors for entries of the dataSet
func colorsOfCharts(numbersOfColor: Int) -> [UIColor] {
var colors: [UIColor] = []
for _ in 0..<numbersOfColor {
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)
}
return colors
}
}
输出:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。