2

如果点的周期超过特定限制,是否有切断图表线?

我的意思是,如果没有特定时间跨度的数据,我想切断图表。

在此处输入图像描述

在上图中,我想剪掉那张图表。

好吧,我正在.net 中为 highcharts 使用 DotNet.Highcharts 实现,但我可以在此处发布生成的 javascript 代码:

$(document).ready(function() {
Chart = new Highcharts.Chart({
    chart: { renderTo:'Chart_container', className: 'chart', defaultSeriesType: 'line', marginBottom: 55, marginRight: 130, zoomType: 'xy' }, 
    legend: { align: 'left', backgroundColor: '#FFFFFF', layout: 'vertical', verticalAlign: 'top', x: 20, y: 80 }, 
    plotOptions: { area: { lineWidth: 1, marker: { enabled: false, states: { hover: { enabled: true, radius: 5 } } }, shadow: false, zIndex: 2 }, line: { allowPointSelect: true, dashStyle: 'solid', lineWidth: 1, marker: { enabled: false } }, spline: { marker: { enabled: false }, zIndex: 1000 } }, 
    subtitle: { text: 'My chart', x: -20 }, 
    title: { text: 'My Chart' }, 
    xAxis: { gridLineWidth: 1, labels: { align: 'left', x: 3, y: -3 }, title: { text: 'My Chart' }, type: 'datetime' }, 
    yAxis: { labels: { formatter: function() { return this.value ; } }, title: { text: 'Battery Voltage (V)' } }, 
    series: [{ data: [['21/06/1392 09:02:32', 19.83], ['21/06/1392 11:02:32', 21.17], ['21/06/1392 13:02:31', 13.89], ['21/06/1392 15:02:31', 15.23]], name: 'Battery Voltage', type: 'line' }]
});

});

4

2 回答 2

2

也许如果您为这些数据点插入空值并确保将 connectNulls 设置为 false。

http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/plotoptions/series-connectnulls-false/

$(function () {
    $('#container').highcharts({

        chart: {
        },

        xAxis: {
            categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
        },

        plotOptions: {
            series: {
                // connectNulls: false // by default
            }
        },

        series: [{
            data: [29.9, 71.5, 106.4, 129.2, null, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
        }]

    });
});
于 2013-09-22T20:03:56.317 回答
1

嗯,我想出了如何解决它,

在我的特殊情况下,我必须检查两个数据点之间的时间跨度是否大于例如 "2 Hours" ,然后我会在这些点之间添加一个数据点并将其值设置为 Null。

由于我使用的是 DotNet.Highcharts,因此这些步骤是使用我的 MVC 控制器逻辑执行的。

 //dtValuesGrouped is a List of Type <DataValue> which is my Data Container class.

 SortedDictionary<string, double?> sortedDict = new SortedDictionary<string, double?>();
    if (dtValues[j + 1].DateTime - dtValues[j].DateTime> TimeSpan.FromHours(2))
    {
        sortedDict.Add(
            (dtValuesGrouped[j].DateTime+ TimeSpan.FromHours(1.5)),
            null);
    }
    sortedDict.Add(
            dtValuesGrouped[j].DateTime,
            dtValuesGrouped[j.Value);

 // and I will finally convert the sortedDictionary to an array of object[,] and set it to Chart.Serries.Data
于 2013-10-16T14:00:31.180 回答