使用iOS图表库,当图表中有多条线时从折线图中获取价值

时间:2019-01-22 07:28:55

标签: ios swift ios-charts

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))
    }
}

在上面的代码片段I中,我通过接触点获得了亮点,我可以做些什么来获取图中的所有线条值,请提出建议? 实际上,我想要图表在该特定点的值,因为它正在工作的一条线,但是对于某条以上的线,有时它返回的是线1的数据,有时是线2的数据,我想要的是线的两个数据,有什么我能做得到的所有行的值? GitHub页面-https://github.com/danielgindi/Charts

1 个答案:

答案 0 :(得分:0)

不太确定您要达到的目标,但我会给您一些选择,以期达到您的目标。

首先,您可以突出显示该行的数据集。你是这样的

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处的选定线的值。

让我知道你过得怎么样。