Избавьтесь от текста 'DataSet' в легенде pieChart - PullRequest
0 голосов
/ 19 февраля 2019

Итак, я создал виртуальный канал с круговой диаграммой.Легенда круговой диаграммы показывает слово DataSet за ним.Это не то, что я сознательно вставил ... Откуда оно взялось, как мне от него избавиться?

enter image description here

Вот мой пирогкод:

fileprivate func setupPieChart() {
    let titleParagraphStyle = NSMutableParagraphStyle()
    titleParagraphStyle.alignment = .center

    let attributedCenterText = NSAttributedString(string:"Number of Reports", attributes:
        [NSAttributedString.Key.foregroundColor: Settings.shared.currentTheme.textColor, NSAttributedString.Key.paragraphStyle: titleParagraphStyle])

    self.pieChartView.backgroundColor = .clear
    self.pieChartView.centerAttributedText = attributedCenterText
    self.pieChartView.drawEntryLabelsEnabled = false
    self.pieChartView.highlightPerTapEnabled = false
    self.pieChartView.holeColor = .clear
    self.pieChartView.legend.textColor = Settings.shared.currentTheme.textColor
    self.pieChartView.usePercentValuesEnabled = false
}

fileprivate func setupPieChartData() {
    let dataSet = PieChartDataSet()
    dataSet.colors = ChartColorTemplates.material()
    dataSet.valueColors = [Settings.shared.currentTheme.textColor]

    for key in self.data.keys.sorted() {
        if let team = self.teamService.team(for: key), let reportCount = self.data[key]?.count {
            let entry = PieChartDataEntry(value: Double(reportCount), label: team.teamName)
            dataSet.append(entry)
        }
    }

    let data = PieChartData(dataSet: dataSet)

    let formatter = NumberFormatter()
    formatter.numberStyle = .decimal
    formatter.maximumFractionDigits = 0
    data.setValueFormatter(DefaultValueFormatter(formatter: formatter))

    self.pieChartData = data
}

1 Ответ

0 голосов
/ 19 февраля 2019

Существует два общедоступных (для класса) PieChartDataSet init метода .

Тот, который вы используете, выглядит следующим образом: public required init() (что и является причиной того, что по умолчанию)Имя набора данных, которое будет сгенерировано).

То, что вам нужно, выглядит так: public override init(values: [ChartDataEntry]?, label: String?)

И вы бы передали пустую строку для метки.

Это означает, что вам нужно создать массив PieChartDataEntry до того, как вы вызовете эту другую функцию PieChartDataSet init(values: insertPieChartDataEntrArrayHere, label: "").

...