как получить строку меток для просмотра маркера в PieChart с помощью библиотеки диаграмм - PullRequest
0 голосов
/ 26 октября 2018

Я использую библиотеку диаграмм для iOS для создания круговой диаграммы.Я просмотрел данную демонстрацию и хотел добавить маркер, когда выбрана круговая диаграмма.

Проблема теперь в том, что хотя я могу получить процентное значение, я не могу получить строку метки, которую представляет выбранное значение.Я использую обратно файл XYMarker в демоверсии.

Вот мой код ввода данных:

`let type = ["Basic Commission", "BSC Bonus", "Overriding Commission", "Other Income"]
let value = [25, 10, 50, 15]

let entries = (0..<count).map { (i) -> PieChartDataEntry in
   return PieChartDataEntry(value: Double(value[i % value.count]),
                                 label: type[i % type.count])
}

let set = PieChartDataSet(values: entries, label: "")

И мой файл XYMarker выглядит следующим образом:

public class XYMarkerView: BalloonMarker {

fileprivate var yFormatter = NumberFormatter()

public override init(color: UIColor, font: UIFont, textColor: UIColor, insets: UIEdgeInsets) {
    yFormatter.numberStyle = .percent
    yFormatter.maximumFractionDigits = 1
    yFormatter.multiplier = 1
    yFormatter.percentSymbol = " %"

    super.init(color: color, font: font, textColor: textColor, insets: insets)
}

public override func refreshContent(entry: ChartDataEntry, highlight: Highlight) {

    let string = yFormatter.string(from: NSNumber(floatLiteral: entry.y))!

    setLabel(string)
}}

Кто-нибудь может помочь получить строку метки?

1 Ответ

0 голосов
/ 13 мая 2019
import Foundation
import Charts

//Its Custom Class for Pie chart;

public class PieMarkerView: BalloonMarker {
  fileprivate var yFormatter = NumberFormatter()

public override init(color: UIColor, font: UIFont, textColor: UIColor, insets: UIEdgeInsets) {
    yFormatter.minimumFractionDigits = 1
    yFormatter.maximumFractionDigits = 1
    super.init(color: color, font: font, textColor: textColor, insets: insets)
}

public override func refreshContent(entry: ChartDataEntry, highlight: Highlight) {

    if (entry is PieChartDataEntry) {
        let pe = entry as! PieChartDataEntry
        let string = ""
            + pe.label!
            + "\n "
            + yFormatter.string(from: NSNumber(floatLiteral: entry.y))!
        setLabel(string)
        return
    }else{
        let string = "x: "
            + String(entry.x)
            + ", y: "
            + yFormatter.string(from: NSNumber(floatLiteral: entry.y))!
        setLabel(string)
    }


}

}

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

//Pie chart MarkerView
        let marker = PieMarkerView(color: UIColor(white: 180/250, alpha: 1),
                                   font: UIFont(name: "open sans", size: 12)!,
                                   textColor: .white,
                                   insets: UIEdgeInsets(top: 8, left: 8, bottom: 20, right: 8))
        marker.chartView = pieChart
        marker.minimumSize = CGSize(width: 80, height: 40)
        pieChart.marker = marker
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...