Преобразовать десятичное число в целое на линейном графике - PullRequest
0 голосов
/ 20 июня 2019

Я использую этот график: https://github.com/danielgindi/Charts

У меня есть один график.Который будет отображать значения на оси х.Но теперь он показывает в десятичном виде, как 22.0.Но я хочу как 22

Вот мой код:

func updateGraphMaster(xAxisLabel: String) {
    var lineChartEntry = [ChartDataEntry]()
    for num in 0..<chartDataDoubles.count {
        let value = ChartDataEntry(x: Double(num), y: chartDataDoubles[num])
        lineChartEntry.append(value)
    }

    let lineChartDataSet = LineChartDataSet(entries: lineChartEntry, label: xAxisLabel)

    lineChartDataSet.colors = [NSUIColor.white]

    lineChartDataSet.highlightEnabled = true
    lineChartDataSet.highlightColor = UIColor.white
    lineChartDataSet.drawVerticalHighlightIndicatorEnabled = false
    lineChartDataSet.drawHorizontalHighlightIndicatorEnabled = false
    lineChartDataSet.drawValuesEnabled = true
    lineChartDataSet.drawCirclesEnabled = false
    lineChartDataSet.drawCircleHoleEnabled = false

    let gradient = getGradientFilling()
    lineChartDataSet.fill = Fill.fillWithLinearGradient(gradient, angle: 90.0)
    lineChartDataSet.drawFilledEnabled = true

    let data = LineChartData()
    data.addDataSet(lineChartDataSet)
    data.setDrawValues(false)
    data.setValueTextColor(NSUIColor.white)


    let formatter = NumberFormatter()
    formatter.maximumFractionDigits = 0
    formatter.numberStyle = .none
    formatter.locale = .current
    //lineChartDataSet.valueFormatter = DefaultValueFormatter(formatter: formatter)

    data.setValueFormatter(DefaultValueFormatter(formatter: formatter))

    chartView.data = data
    chartView.xAxis.valueFormatter = DefaultAxisValueFormatter(formatter: formatter)

}

Здесь я использую setValueFormatter и добавляю данные в представление графика.Но все равно он показывает в десятичном виде.Не целое число.

Ответы [ 3 ]

0 голосов
/ 21 июня 2019

, если вы хотите редактировать сам формат значения набора данных, а не ось, попробуйте это:

        data.valueFormatter = DefaultValueFormatter(decimals: 0)

Надеюсь, это сработает!

Похоже, у вас более 1 данныхустановить для показа на графике?

0 голосов
/ 21 июня 2019

Ваш вопрос был мне неясен, пока вы не показали нам скриншот

Вы не просили отформатировать фактические нарисованные значения, вы просили отформатировать значение, отображаемое надписью маркер , который появляется при нажатии на точку.Для этой реализации я должен был предположить, что вы использовали пользовательский класс BalloonMarker из Charts-Demo, который не форматирует значение своего текста перед отображением.Я смог воспроизвести вашу проблему и исправить ее: обратите внимание на строки 184-187 из BalloonMarker.swift:

184  open override func refreshContent(entry: ChartDataEntry, highlight: Highlight)
185  {
186       setLabel(String(entry.y))
187  }

Строка 186 должна быть заменена на

186       setLabel(String(format: "%.0f", entry.y))

Это должно исправить вашу проблему.Я включаю мое воспроизведение и исправления для вас ниже:

Воспроизведение вашего номера

enter image description here

С Fix

enter image description here

Кроме того, если вы хотите, чтобы ваша ось x отображала только целые числа, вам нужно сделать следующее:

let formatter = NumberFormatter()
formatter.maximumFractionDigits = 0
formatter.numberStyle = .none
formatter.locale = .current
chartView.xAxis.valueFormatter = DefaultAxisValueFormatter(formatter: formatter)
0 голосов
/ 20 июня 2019

Вы хотите установить formatter.maximumFractionDigits на ноль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...