我目前正在iOS Swift中使用Highcharts 10.3.3,并使用initWithJSFunction:(NSString *) jsFunction
方法成功实现了下钻功能。然而,我面临着性能方面的挑战,因为在初始时间发送所有事件系列需要相当长的时间,特别是对于具有多个嵌套下钻的图表。下面是Swift中使用的Highcharts JS函数的代码:
let drilldownFunction = HIFunction(jsFunction: "function (e) { if (!e.seriesOptions) { const chart = this; const extraData = \(extraDataJSONString); const pointExtraData = extraData[e.point.drilldownTo] || {}; chart.yAxis[0].update( { title: { text: pointExtraData.yAxisTitle || null, enabled: pointExtraData.yAxisTitle !== null }, labels: { formatter: pointExtraData.axisProperties.yAxis.dataType === 'STRING' ? '' : \(axisFomatter(axis: "yAxis")) } }, true ); chart.xAxis[0].update( { title: { text: pointExtraData.xAxisTitle || null, enabled: pointExtraData.yAxisTitle !== null }, type: pointExtraData.axisProperties.xAxis.type, labels: { formatter: pointExtraData.axisProperties.xAxis.dataType === 'STRING' ? '' : \(axisFomatter(axis: "xAxis")) } }, false ); const dataJSON = \(dataJSONString); const series = dataJSON[e.point.drilldownTo]; series.forEach(function (d) { chart.addSingleSeriesAsDrilldown(e.point, { name: d.name, type: d.type, drilldownTo: e.point.drilldownTo, color: d.color, dataLabels: {formatter: \(dataLabelformatter) }, data: d.data }); }); chart.applyDrilldown(); } }")
字符串
我正在寻找一种解决方案,在iOS Swift上实现类似于JavaScript的功能。在JavaScript中,我们可以接收第一级钻取图表点击的事件,然后动态追加下一组数据。我很好奇iOS上的Swift是否可以实现这种无缝实现。
任何关于在Swift中实现这一目标的见解或指导都将不胜感激。
1条答案
按热度按时间rvpgvaaj1#
在Swift中,你可以通过处理图表点击事件和动态更新图表数据来实现类似的动态下钻功能。Highcharts提供了一种在Swift中处理图表事件的机制,允许你响应用户交互,例如下钻。
这里有一个简化的例子,说明如何使用Highcharts在Swift中实现动态下钻功能:
字符串
在本例中,
chartView(_:drilldownEvent:)
方法用于处理钻取事件。它会检查单击的类别,并在此基础上加载下一个钻取数据集。然后,它会为下一个钻取级别创建一个新系列,并相应地更新图表选项。这是一个基本示例,您可能需要根据特定的图表结构和数据处理要求对其进行调整。请确保根据需要处理每个级别的钻取事件,并动态加载相应的数据。