问题描述
我有几个复选框,选择它们应该会向现有折线图添加跟踪。我想要多个 y 轴,因为它们的值差别很大。
我从 AJAX 调用中读取新值,每隔一秒更新一次图表。并创建一个 dict 来存储应该绘制的痕迹。
这是我所做的:
var interval = setInterval(function() {
$.ajax({
url : 'ajax/updatevalues',dataType : 'json',type : 'GET',success: function(data)
{
var dateStr = JSON.parse(data.temperature.last_timestamp);
temp_time = new Date(dateStr);
temp_temperature = data.temperature.last;
temp_d850 = data.d850.last;
temp_d280 = data.d280.last;
index.push(temp_time);
temperature.push(data.temperature.last);
d850.push(data.d850.last);
d280.push(data.d280.last);
}
});
temperature_list = [];
d850_list = [];
d280_list = [];
$('input[type=checkBox]').each(function () {
num = get_number_of_traces();
new_y = num[num.length-1];
if(this.checked == true){
if(this.name == 'Temperature'){
temperature_filtered = get_filtered_data(temperature);
trace_temperature = draw_trace_data(new_y,get_filtered_index(),temperature_filtered,"Temperature [°C]" );
dict_traces[document.getElementById('temperature').name] = trace_temperature;
}else if(this.name == 'D850'){
d850_filtered = get_filtered_data(d850);
trace_d850 = draw_trace_data(new_y,d850_filtered,"D850" );
dict_traces[document.getElementById('d850').name] = trace_d850;
}else if(this.name == 'D280'){
d280_filtered = get_filtered_data(d280);
trace_d280 = draw_trace_data(new_y,d280_filtered,"D280" );
dict_traces[document.getElementById('d280').name] = trace_d280;
}
}
values = Object.keys(dict_traces).map(function(key){
return dict_traces[key];
});
});
Plotly.newPlot(testGraph,values);
cnt++;
var i=0;
// updating the graphs layout for each trace
Object.keys(dict_traces).forEach(function(key) {
Plotly.relayout(testGraph,{
["yaxis" + i]: {
title: "y" + i,overlaying: "y1",side: "left",position: 0.1 * (i)
},xaxis: {
domain : [0.1 * (i ),1]
}
}
);
i++;
});
if(++cnt === 100) clearInterval(interval);
},1000);
当我点击新的复选框时。图形变小,这意味着 xaxis
属性正在影响绘图,但没有新的 y 轴添加到绘图中。
我做错了什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)