我目前正在开发一个交互式图表,该图表应该计算商业项目的潜在风险因素。我一直在使用百度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'}]
我已经尝试在每次更改时调用刷新函数,但它将返回刷新不是函数。我真的很茫然,中文文档对我没什么帮助:)。
有什么建议吗?提前谢谢!
答案 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);
}