将十进制转换为折线图上的整数

时间:2019-06-20 19:21:14

标签: ios swift charts

我正在使用以下lib图:https://github.com/danielgindi/Charts

我有一个折线图。它将在x轴上显示值。但是现在它以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 :(得分:0)

您要将formatter.maximumFractionDigits设置为零。

答案 1 :(得分:0)

如果要编辑数据集值格式本身而不是轴,请尝试以下操作:

        data.valueFormatter = DefaultValueFormatter(decimals: 0)

我希望它能起作用!

您似乎有多个数据集要显示在图表上?

答案 2 :(得分:0)

在您向我们展示屏幕截图之前,您的问题一直不清楚。

您并不是要设置要绘制的实际绘制值,而是要设置单击点时出现的标记的标签显示的值的格式。对于该实现,我必须假定您使用了Charts-Demo中的自定义类BalloonMarker,该类在显示之前不会格式化其文本的值。我能够重现您的问题并解决它:请注意BalloonMarker.swift中的184-187行:

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

已修复

enter image description here

此外,如果您希望确保x轴仅显示整数,则需要执行以下操作:

let formatter = NumberFormatter()
formatter.maximumFractionDigits = 0
formatter.numberStyle = .none
formatter.locale = .current
chartView.xAxis.valueFormatter = DefaultAxisValueFormatter(formatter: formatter)