Javascript 不同采样间隔的谷歌折线图

Javascript 不同采样间隔的谷歌折线图,javascript,google-visualization,Javascript,Google Visualization,我试图在一个平面上画多条线,但每一条线都有不同的数据采样间隔——有些是每4小时一次,有些是每8小时一次 如果我将间隔合并在一起,数据看起来像这样 Interval, Avg-8h, Avg-4h 0 , 0.45, 0.33 4 , , 0.21 8 , 0.32, 0.55 12 , , 0.65 目前,我能得到的最好结果是Avg-4h线出现了,但是Avg-8h线,由于“间隙”,仅仅是点 这方面的一个最简单的例子(

我试图在一个平面上画多条线,但每一条线都有不同的数据采样间隔——有些是每4小时一次,有些是每8小时一次

如果我将间隔合并在一起,数据看起来像这样

Interval, Avg-8h, Avg-4h
0       ,   0.45, 0.33
4       ,       , 0.21
8       ,   0.32, 0.55
12      ,       , 0.65
目前,我能得到的最好结果是Avg-4h线出现了,但是Avg-8h线,由于“间隙”,仅仅是点

这方面的一个最简单的例子(对大量HTML表示歉意):


var数据;
var图;
load('visualization','1',{'packages':['corechart']});
setOnLoadCallback(drawChart);
函数绘图图(){
风险值数据={
“科尔斯”:[
{“标签”:“间隔”,“类型”:“编号”},
{“标签”:“Avg-8h”,“类型”:“编号”},
{“标签”:“Avg-4h”,“类型”:“编号”}],
“行”:[
{“c”:[{“v”:24},{“v”:0.2275},{“v”:0.1527}]},
{“c”:[{“v”:20},{},{“v”:0.0664}]},
{“c”:[{“v”:16},{“v”:0.0624},{“v”:0.0495}]},
{“c”:[{“v”:12},{},{“v”:0.0555}]},
{“c”:[{“v”:8},{“v”:0.109},{“v”:0.1112}]},
{“c”:[{“v”:4},{},{“v”:0.1403}]},
{“c”:[{“v”:0},{“v”:0.1403},{}]}
]
};
var table=新的google.visualization.DataTable(数据);
变量选项={
图例:“无”,
点数:5
};
var chart=new google.visualization.LineChart(document.getElementById('chart_div'));
图表、绘图(表格、选项);
}
除了插入假/伪值(我不想这样做-这会歪曲实际数据),还有其他方法吗


我已经尝试过将空值设置为null或empty,但到目前为止运气不佳

您可以动态自动计算区间值,唯一的缺点是这些值将显示为图形上的点。定义了
数据后,需要运行以下操作:

for(var i = 0; i < data.rows.length; i++) {
    if(data.rows[i].c[1].v == undefined) {
        data.rows[i].c[1].v = (data.rows[i - 1].c[1].v + data.rows[i + 1].c[1].v) / 2;
    }
}
for(变量i=0;i

这将遍历每一行,检查值是否已定义。如果没有,它将找到下一个点和上一个点之间的中点,并将其作为值。下面是它的工作原理。

我遇到了完全相同的问题,并按如下方式修复了它:

使用线形图页面中记录的
interpolutenulls
选项:

是否猜测缺失点的值。如果为true,它将根据相邻点猜测任何缺失数据的值。如果为false,它将在未知点留下一条线中断


该选项默认为False,使用
var options={'interpolutenulls':true}将其设置为true

不幸的是,我不能插入假值或伪值(这就是这些值)。这是因为它们显示了一个点吗?它们不是真正的虚拟数据,只是提供连接点方法的中间点。将寻找一个替代方案…我想显示它们在源数据中的位置-因为它让用户能够更仔细地检查数据,并在工具提示中查看任何适用的其他信息。插入虚拟数据不合适,因为它们实际上不在源数据中,并且可能导致用户对数据做出错误的假设。这是有道理的,但环顾四周,我看不到在x轴上执行此操作的方法。看起来您可以指定两个单独的y轴,如下面的答案所示:但我尝试对x轴执行此操作,但不起作用:(
for(var i = 0; i < data.rows.length; i++) {
    if(data.rows[i].c[1].v == undefined) {
        data.rows[i].c[1].v = (data.rows[i - 1].c[1].v + data.rows[i + 1].c[1].v) / 2;
    }
}