I' D喜欢选择最后一个数据点编程和绘制渐变背景,但我得到的亮点是NAN,所以我可以'吨得到的坐标来绘制gradient.I使用:
chartView.highlightValue(Highlight(x: lastEntry.x, y: lastEntry.y, dataSetIndex: 0), callDelegate: true)
选择最后一个条目,并在委托函数中绘制渐变:
func chartValueSelected(_ chartView: ChartViewBase, entry: ChartDataEntry, highlight: Highlight)
但重点是NAN然后崩溃 我也尝试过使用" valueToPixelMatrix"获取坐标的方法,但结果与highlight.xPx和highlight.yPx不同, 我想问一下如何在Chart View上获得正确的数据点坐标。谢谢。
答案 0 :(得分:1)
我认为您使用错误的方式来自定义突出显示。您不需要使用此委托功能进行绘图。
您需要创建自己的渲染器类并覆盖drawHighlighted(context: CGContext, indices: [Highlight])
方法。在这个地方,您将获得正确的坐标。
请记住,您需要根据图表视图的类型从正确的父类实例化。 (例如CandleStickChartRenderer
,BarChartRenderer
,LineChartRenderer
等)
请勿忘记将自定义渲染器类的实例设置为图表视图的渲染器属性。
祝你好运。答案 1 :(得分:0)
您可以尝试以下方法:
func chartValueSelected(_ chartView: ChartViewBase, entry: ChartDataEntry, highlight: Highlight) {
guard let chartDataSet = data.set else {return} // get dataSet used by chart
guard let chartView = chartView as? LineChartView else {return}
let transform = chartView.getTransformer(forAxis: chartDataSet.axisDependency)
let pt = transform.pixelForValues(x: highlight.x, y: highlight.y)
if highlightMark == nil {
setHighlightMark() // create a custom view
self.addSubview(highlightMark!)
}
let convertPt = self.convert(pt, from: chartView)
highlightMark?.center = CGPoint(x: convertPt.x, y: convertPt.y)
}