Highchart js最多可绘制15个图表。

4
我在Highchart js上尝试了很多次,仍然找不到减少系列中元素数量的方法。
如果我有超过15天的数据,我必须将其减少并显示给用户,以便用户可以查看数据而不会拥挤。最多可以在系列中显示90天的数据,我需要将其减少到15天。
在此处检查我的当前代码:http://jsfiddle.net/MULZL/ 有人可以给我一个解决方案吗?
附言:我不想将其减少到前15天或后15天。我只是想这样做,因为在图表中获得90天的数据看起来很拥挤,我不想应用缩放功能。如果数据超过15天,我想要忽略一些数据(日期)以使其变成15天。

1
你看过HighStock吗?它可以自动聚合数据。顺便提一下,HighStock可以渲染折线图。 - Sandeep G B
@SandeepGB:我不想要缩放或时间轴滚动选项。我只想自动减少绘图。 - Princeyesuraj
1
我认为HighStock有一个选项可以防止缩放/平移并隐藏图表的底部部分(迷你图表)。我不记得实际设置。您需要参考API /参考资料。 - Sandeep G B
你能否获取数据的开始日期? - Zaheer Ahmed
@JugalThakkar:不是这样,它会忽略中间的某些天数以使其为15天。 - Princeyesuraj
显示剩余5条评论
2个回答

0

你可以尝试使用 highStock 的dataGrouping功能

var dataGrouping = {
    groupPixelWidth: 40,
    units: [[
        'day',
        [1, 2, 3,4,5,6]
        ]]
};

Highcharts 会确保所有的列至少有指定的宽度(40),如果列数很大,无法达到该宽度,它将使用单位对数据进行分组,因此它会将一天的数据分组为一列或两天的数据分组为一列等等。 我不确定你是否真的想要15个图表,但我认为你关心的是避免数据拥挤,这正是它所做的,但列数将根据您指定的宽度、绘图区域的宽度、允许的单位及其倍数而变化。根据您的数据和图表的宽度调整值。 jsFiddle


0

您可以使用Axis.setExtremes方法以编程方式缩放到所需的时间范围。在您的情况下,您可能希望在加载时这样做(on load)

如果您想要缩放到给定数据的前15天,可以轻松修改以缩放到最后15天。以下是如何操作:

function zoomTo15Points(chart){
    var points=chart.series[0].points;
    if(points.length<15)   return;
    var min=points[0].x;    
    var max=points[14].x;
    // If you wish to zoom to 15 days and not 15 points, you can modify max as
    // var max=min + 1000*60*60*24*14
    chart.xAxis[0].setExtremes(min,max);    
    chart.showResetZoom();
}

如果您不想让用户缩小页面,您可以禁用最后一行代码,但是您也必须禁用缩放功能,否则如果用户在15天内进行缩放,按钮仍然会出现。

Highchart Zoom on Load @ jsFiddle


1
问题在于@Princeyesuraj不想要前15天或后15天,他想要一些间隔天数的值,并从90天中获取15天。 - Zaheer Ahmed
@ZaheerAhmed 是的,我明白了,他想要的是插值或数据分组到15个点,而不是15天,以确保精度。 - Jugal Thakkar
@JugalThakkar:抱歉没有提出正确的问题。我想忽略一些数据,使其为15天。不是第一个或最后15天。 - Princeyesuraj
请根据这个准确的信息修改你的答案,如果可以的话。 - Zaheer Ahmed
您可以尝试使用 HighStock 的 dataGrouping 功能,fiddle 地址为 http://jsfiddle.net/jugal/JraJW/4/,参考文档在 http://api.highcharts.com/highstock#plotOptions.column.dataGrouping。 - Jugal Thakkar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接