首页 > 解决方案 > 使用iOS图表库,当图表中有多条线时从折线图中获取值

问题描述

func updatePenValue() {
    if let highlight = chartView.getHighlightByTouchPoint(scrollerView.center) {
        penValueLabel.text = Double.getPenValueInString(value: highlight.y)
        dateTimeLabel.text = Date.get24HourDateString(date:
            Date.getDateFromInterval(timeInterval: highlight.x))
    }
}

在上面的代码片段中,我通过触摸点获得了高亮,我可以做些什么来获得图表中的所有线条值,请建议我?实际上,我想要图表在该特定点的值对于它正在工作的一条线,但是对于不止一条线,有时它会返回 line1 的数据,有时会返回 line2 的数据,我想要的是两条线的数据,有什么我可以做的吗?所有行的值??GitHub 页面 - https://github.com/danielgindi/Charts

标签: iosswiftios-charts

解决方案


不太确定你想达到什么目标,但我会给你一些选择,希望能实现你的目标。

首先,您可以获得突出显示的行的 DataSet。你这样做

let dataSet = chartView?.data?.dataSets[ highlight.dataSetIndex]

然后返回数据集标签名称和所有看起来像这样的数据点

Optional(Charts.LineChartDataSet, label: Some Title, 4 entries:
ChartDataEntry, x: 1.0, y 216.0
ChartDataEntry, x: 2.0, y 243.0
ChartDataEntry, x: 3.0, y 310.0
ChartDataEntry, x: 4.0, y 461.0)

然后,您可以使用它map来获取您需要的数据

let title = dataSet.map({ $0.label })

还有其他选择,例如

let itemAtXValue = dataSet.map({ $0.entriesForXValue(3.0) }

这将返回 x 轴 3.0 处所选线的值。

让我知道你是怎么办的。


推荐阅读