2015-07-09 15 views
5

Tôi đang xây dựng một biểu đồ sử dụng iOS-bảng xếp hạng IOS CHARTiOS-Charts phao để Integer YAxis

Tôi đang cố gắng để chuyển đổi các phao nổi vào int, nhưng iOS bảng xếp hạng chỉ cho phép Floats trong nhập dữ liệu:

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

Có ai biết phương pháp đảm bảo chỉ sử dụng int không?

Trả lời

7

Bạn chỉ cần điều chỉnh Ví dụ NSNumberFormatter ...

:

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

NSNumberFormatter là một lớp rất mạnh mẽ, bạn có thể làm nhiều hơn thế nữa với nó. :-)

+0

Cảm ơn bạn giúp đỡ. Tôi đã thử điều này, nhưng thật đáng buồn là nó không hoạt động. Không thể tìm thấy bất kỳ thông tin nào về repo, hoặc: ( –

+1

@HannahLouisaCarney Nó hoạt động. Bạn đã thử cái gì? Có lẽ bạn đang thiết lập sai giá trị 'thuộc tính' '? Các thành phần khác nhau có thuộc tính riêng biệt –

+0

Bạn đúng, xin lỗi! thêm: self.lineChartholder.leftAxis.valueFormatter = NSNumberFormatter() self.lineChartholder.leftAxis.valueFormatter? .minimumFractionDigits = 0 –

0

Điều này phù hợp với tôi. Tuy nhiên, các nhãn trục y sẽ tròn khi hiển thị các số nhỏ, vì vậy nếu bạn đang vẽ biểu đồ, hãy nói 1 hoặc 2, biểu đồ sẽ hiển thị 0 hai lần. (Xem ở đây: Force BarChart Y axis labels to be integers?)

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 
16

Đối Swift 3.0 và Charts 3.0 bạn cần phải kích hoạt và thiết lập chi tiết cho các trục.

Ví dụ:

barChart.leftAxis.granularityEnabled = true 
barChart.leftAxis.granularity = 1.0 
0

Bạn có thể thử thế này, nó làm việc độc đáo cho tôi

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