iOS-диаграммы плавают до целых чисел по оси Y

Я строю диаграмму с помощью iOS-диаграмм IOS CHART

Я пытаюсь преобразовать поплавки в int, но iOS-диаграммы позволяют использовать только поплавки в вводе данных:

      let result = ChartDataEntry(value: Float(month), xIndex: i)

Кто-нибудь знает способ убедиться, что используются только целые числа?


person HannahCarney    schedule 09.07.2015    source источник


Ответы (5)


Вам просто нужно настроить NSNumberFormatter...

Пример:

yAxis.valueFormatter = NSNumberFormatter()
yAxis.valueFormatter.minimumFractionDigits = 0

NSNumberFormatter — очень мощный класс, с ним можно сделать гораздо больше. :-)

person daniel.gindi    schedule 09.07.2015
comment
Спасибо за помощь. Я пробовал это, но, к сожалению, это не сработало. Не могу найти никакой информации о репо :( - person HannahCarney; 17.07.2015
comment
@HannahLouisaCarney Это работает. Что вы пробовали? Может быть, вы устанавливаете неправильное значение Formatter property? Различные компоненты имеют это свойство отдельно - person daniel.gindi; 18.07.2015
comment
Вы правы, извините! Я добавил: self.lineChartholder.leftAxis.valueFormatter = NSNumberFormatter() self.lineChartholder.leftAxis.valueFormatter?.minimumFractionDigits = 0 - person HannahCarney; 20.07.2015
comment
Это не совсем работает. Если диапазон осей слишком мал, т.е. 5-8, с 7 линиями сетки, то на оси отображаются 5, 5, 6, 6, 6, 7, 7. - person andrewtweber; 28.01.2016

Для Swift 3.0 и Charts 3.0 вам необходимо включить и установить детализацию для оси.

Пример:

barChart.leftAxis.granularityEnabled = true
barChart.leftAxis.granularity = 1.0
person Seref Bulbul    schedule 19.10.2016

Это сработало для меня. Однако метки оси Y будут округлены при отображении небольших чисел, поэтому, если вы рисуете диаграмму, скажем, 1 или 2, диаграмма будет отображать 0 дважды. (См. здесь: Принудительно сделать метки оси Y BarChart целыми числами?)

let numberFormatter = NSNumberFormatter()
numberFormatter.generatesDecimalNumbers = false
chartDataSet.valueFormatter = numberFormatter
// Converting to Int for small numbers rounds weird
//barChartView.rightAxis.valueFormatter = numberFormatter
//barChartView.leftAxis.valueFormatter = numberFormatter
person Morgan    schedule 05.01.2016

Вы можете попробовать этот, он работал хорошо для меня

let formatter = NSNumberFormatter()
formatter.numberStyle = .NoStyle
formatter.locale = NSLocale(localeIdentifier: "es_CL")
BarChartView.leftAxis.valueFormatter = formatter
person LastNeoNotTheHero    schedule 30.12.2016

Свифт4.2 ; Xcode 10.0:

let numberFormatter = NumberFormatter()
numberFormatter.generatesDecimalNumbers = false
barChart.leftAxis.valueFormatter = DefaultAxisValueFormatter.init(formatter: numberFormatter)
person Antony Wong    schedule 16.10.2018