Swift iOS图表-隐藏某些条形图值标签

dpiehjr4  于 2023-01-18  发布在  iOS
关注(0)|答案(2)|浏览(176)

我正在使用swift为我的iOS应用程序使用“图表”框架,我在我的一个VC上使用条形图,但目前它看起来相当混乱,因为它显示了每个值的值标签,即使它是0。我想知道是否有可能只显示标签,如果值大于0?我一直在寻找其他问题,但我似乎无法找到这个问题的答案。我知道我可以使用chartData.setDrawValues(false)隐藏所有标签,但是,我仍然希望显示大于0的值。

这是我目前用来格式化图表的代码

barChart.highlightPerTapEnabled = false
    barChart.highlightPerDragEnabled = false
    barChart.leftAxis.drawAxisLineEnabled = true
    barChart.leftAxis.drawGridLinesEnabled = false
    barChart.xAxis.labelPosition = .bottom
    barChart.xAxis.centerAxisLabelsEnabled = true
    barChart.xAxis.axisMinimum = 0
    barChart.xAxis.axisMaximum = 7
    barChart.xAxis.drawAxisLineEnabled = true
    barChart.xAxis.drawGridLinesEnabled = true
    barChart.rightAxis.enabled = false
    barChart.leftAxis.axisMinimum = 0

我想过做这样的事-

for value in chartDataSet.entries {
    if value.y == 0 {
      chartDataSet.drawValuesEnabled = false
    }
    else {
      chartDataSet.drawValuesEnabled = true
    }
 }

但当然这不起作用,因为它为整个集合设置了布尔值。
任何帮助将不胜感激!谢谢

r6hnlfcb

r6hnlfcb1#

您只需按如下所示将自定义IValueFormatter提供给BarChartData

public class XValueFormatter: NSObject, IValueFormatter {

    public func stringForValue(_ value: Double, entry: ChartDataEntry, dataSetIndex: Int, viewPortHandler: ViewPortHandler?) -> String {
        return value <= 0.0 ? "" : String(describing: value)
    }
}

let chartData = BarChartData(dataSet: yourSet)
chartData.setValueFormatter(XValueFormatter())

注意:String(describing: value)只是提供一个可操作的例子,您可以使用适当的数字格式化器将Double转换为String

m2xkgtsf

m2xkgtsf2#

barChartView.data?.setDrawValues(false)
// to disable the data in the bars

相关问题