Показывать только цифры в PieChartView от (ключ, значение) - PullRequest
0 голосов
/ 19 сентября 2018

Я использую PieChartView для рисования следующей круговой диаграммы в моем приложении.Мое требование - показывать только% (процент), а не имя ключа.

enter image description here

Это мой код для рисования круговой диаграммы в поле зрения

func drawPieChart(pieChart: PieChartView, data: [String: Double]) -> Void {

    //Setup constraints first

    var dataEntries = [PieChartDataEntry]()

    var total = 0.0
    for (key, val) in data {
        total += val
    }

    for (key, val) in data {
        let percent = (val / total)
        let entry = PieChartDataEntry(value: percent, label: key)
        dataEntries.append(entry)
    }

    let chartDataSet = PieChartDataSet(values: dataEntries, label: "")
    chartDataSet.colors = ChartColorTemplates.bookingPieChart()
    chartDataSet.sliceSpace = 2
    chartDataSet.selectionShift = 5

    let chartData = PieChartData(dataSet: chartDataSet)
    let formatter = NumberFormatter()
    formatter.numberStyle = .percent
    formatter.maximumFractionDigits = 0
    chartData.setValueFormatter(DefaultValueFormatter(formatter: formatter))
    pieChart.data = chartData
}

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Следующий код решил мою проблему, используя класс "LegendEntry".

    for (key, val) in data {
        let percent = (val / total)
        let entry = PieChartDataEntry(value: percent, label: "")
        dataEntries.append(entry)

        let legendEntry: LegendEntry = LegendEntry(label: key, form: .circle, formSize: 5.0, formLineWidth: 0, formLineDashPhase: 0, formLineDashLengths: [0], formColor: colorData[key])
        legendEntries.append(legendEntry)            
    }

    pieChart.legend.setCustom(entries: legendEntries)
0 голосов
/ 19 сентября 2018

Привет, я думаю, что если вы не хотите показывать имя ключа, вам нужно отправить пустую строку в метке

Изменить

 let entry = PieChartDataEntry(value: percent, label: key)

на

 let entry = PieChartDataEntry(value: percent, label: "")
...