ECharts刷新数据更改

时间:2016-12-01 11:45:11

标签: refresh baidu echarts

我目前正在开发一个交互式图表,该图表应该计算商业项目的潜在风险因素。我一直在使用百度ECharts,并使图表可视化,但无法在数据更改时更新图表。

数据来自外部调查问卷,该调查问卷使用数字单选按钮和复选框来打开和关闭整个设置。

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

现在,问题是将数据导入图表。它获得了最初选择的值(当向其中一个添加“checked”时),但在此之后不会更新。

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

我已经尝试在每次更改时调用刷新函数,但它将返回刷新不是函数。我真的很茫然,中文文档对我没什么帮助:)。

有什么建议吗?提前谢谢!

3 个答案:

答案 0 :(得分:9)

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

我举一个小例子:

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

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

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

答案 1 :(得分:0)

例如,您可以使用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'
                }
            ]
        }]
    });

一旦您拖欠了您的钱,您就可以使用“ resize()”方法重绘echar。

window.chartRadar.resize();

答案 2 :(得分:0)

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

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