ECHARTS刷新数据更改



我目前正在使用交互式图表,该图表应计算商业项目的潜在风险因素。我一直在为此使用Baidu Echarts,并在视觉上可以使用该图,但是当数据更改时无法更新图形。

数据来自外部问卷,该问卷使用RadioButtons进行值和复选框来打开和关闭整个设置。

 <input type="checkbox" id="GPEbool" value="true"> Example Question 1</h4>
    <form action="">
  <input type="radio" id="polishedness" value="1"> Idea<br>
  <input type="radio" id="polishedness" value="1"> Concept<br>
  <input type="radio" id="polishedness" value="2"> Mockup<br>
  <input type="radio" id="polishedness" value="5"> Prototype<br>
  <input type="radio" id="polishedness" value="7"> Playable<br>
  <input type="radio" id="polishedness" value="15"> Polish<br>
  <input type="radio" id="polishedness" value="30"> Finished<br>
</form>

现在,问题是将数据输入图表。它可以正确选择最初选择的值(将"检查"添加到其中一个时),但此后不会更新。

data: [{ value: $('input[name=polishedness]:checked').val(), name: 'Design'}]

每当发生任何变化时,我都尝试调用刷新功能,但是它将返回刷新不是一个函数。我真的很茫然,中国文档对我没有太大帮助:)

有什么建议吗?预先感谢!

您必须使用新数据再次调用chartInstance.setOption()

我给你一个小例子:

// eChart is the chart instance!
echart.setOption({
   // .... some configuration
   series: [
       {
           type: "line",
           name: "test",
           data: [1,2,3,4,5,6]
       }
   ]
})

之后,您更改了选择框的值,必须捕获该事件,更改配置对象的值和 call chartInstance.setOption() 再次

因此,有时建议保存完整的配置对象并将更改存储在此处。

您可以使用resize()方法,例如

window.chartRadar = echarts.init(document.getElementById('echartId'));
window.chartRadar.setOption({
        title: {
            text: 'radar echart'
        },
        tooltip: {},
        legend: {
            data: ['data1', 'data2']
        },
        radar: {
            // shape: 'circle',
            name: {
                textStyle: {
                    color: '#fff',
                    backgroundColor: '#999',
                    borderRadius: 3,
                    padding: [3, 5]
               }
            },
            indicator: [
               { name: 'sales', max: 6500},
               { name: 'Administration', max: 16000},
               { name: 'Information Techology', max: 30000},
               { name: 'Customer Support', max: 38000},
               { name: 'Development', max: 52000},
               { name: 'Marketing', max: 25000}
            ]
        },
        series: [{
            name: 'Budget vs spending',
            type: 'radar',
            // areaStyle: {normal: {}},
            data : [
                {
                    value : [4300, 10000, 28000, 35000, 50000, 19000],
                    name : 'data1'
                },
                 {
                    value : [5000, 14000, 28000, 31000, 42000, 21000],
                    name : 'data2'
                }
            ]
        }]
    });

AlreAy让您echart echart,您可以使用Redraw echar的方法" resize()"例如

window.chartRadar.resize();

如果您使用的是Angular,您也可以使用[合并]选项使图表响应值更改,

<div echarts [options]="initialValue" [merge]= "dynamicData" class="demo-chart"></div>

参考:https://github.com/xieziyu/ngx-echarts#api

在您的模块中分配初始值如下,

  initialValue: EChartOption = {
xAxis: {
  type: 'time',
  splitNumber : 20
},
yAxis: {
  type: 'value',
  name : '$',
  nameLocation: 'middle'
},
series: [{
  data : [],
  type: 'line'
}]

}

并根据您的数据设置动态值,在将API调用到外部服务

之前,还将初始化" this.dynamicdata"
 formDataforChart(backTestTrades) {
    let i = 0;
    for(let backTestTrade of backTestTrades){
       let profitAndTime = [];
       profitAndTime.push(backTestTrade.exitTime);
       profitAndTime.push(backTestTrade.profitOrLoss);
       this.eChartDataSeries.push(profitAndTime);
    }
    let data = {
      data : this.eChartDataSeries,
      type : 'bar'
    };
    this.dynamicData=this.initialValue;
    this.dynamicData.series = [];
    // Applying my dynamic data here
    this.dynamicData.series.push(data);  
  }

相关内容

  • 没有找到相关文章

最新更新