如何在Highcharts极坐标图中动态设置系列数据?

pb3s4cty  于 2022-11-10  发布在  Highcharts
关注(0)|答案(1)|浏览(193)

我有一个Highcharts极坐标图,它可以很好地内联显示我的数据,但我的应用程序的工作流程要求数据与图表配置分开加载。当我使用chart.series[0].setData(mySeriesData)时,其他图表类型似乎工作正常,但极坐标图看起来很傻。除了系列数据外,两个图表的图表配置完全相同。我做错了什么?
下面是我的例子:https://jsfiddle.net/cfarmerga/br3cz4vf/

我的图表:

const config = {
  "chart": {
    "polar": true,
    parallelCoordinates: true,
    parallelAxes: {
      gridLineWidth: 0,
    },    
  },
  "series": [
    {
      "name": "one",
      "type": "line",
    },
    {
      "name": "two",
      "type": "line",
    },
  ],
  "title": { "text": "" },
  "xAxis": {
    "gridLineWidth": 0,
    "labels": {
      "enabled": true,
    },
    categories: ['0', '1', '2', '3', '4'],
    type: 'category'
  },
  "yAxis": [
    {
      "max": 10,
      "min": -10,
    },
    {
      "max": 450,
      "min": 300,
    },
    {
      "max": 12,
      "min": 1,
    },
    {
      "max": 12,
      "min": 2,
    },
    {
      "max": 12,
      "min": 2,
    }
  ],
};

// Set up first chart with inline data specified in the series
const config1 = JSON.parse(JSON.stringify(config));
config1.title.text = "in-line data shows ok"
config1.series[0].data = data1;
config1.series[1].data = data2;
const chart1 = Highcharts.chart(containerId, config1);

// Set up second chart with no initial data...
const config2 = JSON.parse(JSON.stringify(config));
config2.title.text = "Why doesn't dynamic data loading work?"
const chart2 = Highcharts.chart(containerId2, config2);

// ... but try to dynamically load datasets into series
chart2.series[0].setData(data1);
chart2.series[1].setData(data2);
chart2.redraw();
ma8fv8wu

ma8fv8wu1#

来自高排行榜Github:
在目前的实作中,图表只会在图表初始化时建立平行轴。这是由效能决定的:一般来说,平行图表是用于大量的数据。2观察数据集的变化(类别的数量等)会消耗相当多的性能,我们认为在我们真正需要的时候重新创建图表会更容易和更快。
作为一种解决方案,您可以在收到数据时创建一个图表,或者使用chart.update

chart2.update({
    series: [{
        data: data1
    }, {
        data: data2
    }]
});

现场演示:https://jsfiddle.net/BlackLabel/tnhy9a1u/
Github问题:https://github.com/highcharts/highcharts/issues/16380

相关问题