我目前正在使用交互式图表,该图表应计算商业项目的潜在风险因素。我一直在为此使用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);
}