Я использую danielgindi/Charts для iOS/Swift. На круговой диаграмме отображается дополнительная запись легенды с меткой «Набор данных», как показано на этом изображении:
Когда я проследил, я обнаружил, что в массиве LegendEntry, найденном в легенде PieChartView, есть две записи, то есть PieChartView.legend.entries, где у меня есть только один объект в моем массиве.
Вот код:
let dataSet = PieChartDataSet()
dataSet.drawIconsEnabled = false
dataSet.setColor(AppColors.selectedMenuItem)
dataSet.sliceSpace = 3
dataSet.iconsOffset = CGPoint(x: 0, y: 40)
dataSet.selectionShift = 5
var totalRevenuePer:Double = 0.0
_ = arrRevenue.map({ (objRevenue) -> Void in
if let percentage = Double(objRevenue.per ?? "0.0"), percentage != 0.0{
dataSet.append(PieChartDataEntry(value: percentage, label: "\((objRevenue.rev_center_name ?? "") + " " + objRevenue.revenue.currencyString())"))
totalRevenuePer += percentage
}
})
var colors = AppColors.TenderColors
if totalRevenuePer < 100{ colors.append(.clear) }
dataSet.colors = colors
let data = PieChartData(dataSet: dataSet)
data.setValueFormatter(PercentageFormatter())
data.setValueFont(NSUIFont.systemFont(ofSize: 11))
data.setValueTextColor(.white)
pieChart.data = data
pieChart.highlightValue(nil)
let legend = pieChart.legend
legend.textColor = .white
legend.entries.last?.label = ""
pieChart.animate(yAxisDuration: 1.4, easingOption: .easeInOutQuad)
// Refresh chart with new data
pieChart.notifyDataSetChanged()
Ценю любую помощь, спасибо.
Думаю проблема в строчке где вы написали label: "\((objRevenue.rev_center_name ?? "") + " " + objRevenue.revenue.currencyString())")
Если убрать ?? "", все будет хорошо.
@AtalayAsa, я не думаю, что это должно быть проблемой, он просто обрабатывает необязательное значение. Если значение равно нулю, это предотвращает сбой.
@BenRockey, AppColors — это простой массив UIColor, arrRevenue — это массив, заполненный значениями, полученными с сервера (который имеет только одно значение, то есть Positronics, как вы можете видеть на изображении выше), а PercentageFormatter — это подкласс IValueFormatter, IAxisValueFormatter — распечатать значение круговой диаграммы в процентном формате.
Это собственность PieChartDataSet
Значение по умолчанию, если вы не установили свое собственное, — «DataSet».
let dataSet = PieChartDataSet()
// provide your own
dataSet.label = "My Label"
// or, no label
dataSet.label = ""
AppColors,arrRevenue, PercentageFormatter подробности, пожалуйста