如何在highcharts中使用虚线连接空值

时间:2017-04-27 13:39:23

标签: javascript highcharts

我想在图表中用虚线连接空值。 下面是我的代码所在的JS小提琴的网址 -

data:  [
        [Date.UTC(2016, 1, 1),null], 
        [Date.UTC(2016, 2, 1),null], 
        [Date.UTC(2016, 3, 1),500], 
        [Date.UTC(2016, 4, 1),600], 
        [Date.UTC(2016, 5, 1),null], 
        [Date.UTC(2016, 6, 1),700], 
        [Date.UTC(2016, 7, 1),null], 
        [Date.UTC(2016, 8, 1),null], 
        [Date.UTC(2016, 9, 1),null],
        [Date.UTC(2016, 10, 1),null],
        [Date.UTC(2016, 11, 1),null], 
        [Date.UTC(2017, 0, 1),500]
        ],

http://jsfiddle.net/Ashish_developer/ue0wb8w0/

3 个答案:

答案 0 :(得分:4)

您可以使用series.zones来定义图表的哪个部分将为虚线。

根据您的数据,构建区域数组的算法可能是这样的(可以随意调整它):

function buildZones(data) {
  var zones = [],
      i = -1, len = data.length, current, previous, dashStyle, value;

  while (data[++i] === null);
  zones.push({
    value: i
  });

  while (++i < len) {
    previous = data[i - 1];
    current = data[i];
    dashStyle = '';

    if (previous !== null && current === null) {
      dashStyle = 'solid';
      value = i - 1;
    } else if (previous === null && current !== null) {
      dashStyle = 'dot';
      value = i;
    }

    if (dashStyle) {
      zones.push({
        dashStyle: dashStyle,
        value: value
      });
    }
  }

  return zones;
}

系列配置:

series: [{
  zones: buildZones(data),
  zoneAxis: 'x',
  data: data,
  connectNulls: true
}]

示例:http://jsfiddle.net/asf52ft8/

enter image description here

答案 1 :(得分:-1)

我觉得它很适合你..这个图适合不规则间隔

Highcharts.chart('container', {
    chart: {
        type: 'spline'
    },
    title: {
        text: 'Snow depth at Kerala, India'
    },
    xAxis: {
        type: 'datetime',
        dateTimeLabelFormats: { 
            month: '%b',
            year: '%b'
        },
        title: {
            text: 'Date'
        }
    },
    yAxis: {
        title: {
            text: 'Snow depth (m)'
        },
        min: 0
    },
    tooltip: {
        headerFormat: '<b>{series.name}</b><br>',
        pointFormat: '{point.x:%e. %b}: {point.y:.2f} m'
    },

    plotOptions: {
        spline: {
            marker: {
                enabled: true
            }
        }
    },

    series: [{
        name: 'Winter 2017',
        data: [
            [Date.UTC(2017,01,01), 0],
            [Date.UTC(2017,04,01), 6],
            [Date.UTC(2017,05,01), 3],
            [Date.UTC(2017,06,01), 7],
            [Date.UTC(2017,07,01), 5],
            [Date.UTC(2017,12,01), 6],
        ]
    }]
});
<script src="https://code.highcharts.com/highcharts.js"></script>
<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>

答案 2 :(得分:-1)

也试试这个

Highcharts.chart('container', {
    chart: {
        type: 'spline'
    },
    title: {
        text: 'Snow depth at Vikjafjellet, Norway'
    },
    subtitle: {
        text: 'Irregular time data in Highcharts JS'
    },
    xAxis: {
        type: 'datetime',
        dateTimeLabelFormats: { // don't display the dummy year
            month: '%e. %b',
            year: '%b'
        },
        title: {
            text: 'Date'
        }
    },
    yAxis: {
        title: {
            text: 'Snow depth (m)'
        },
        min: 0
    },
    tooltip: {
        headerFormat: '<b>{series.name}</b><br>',
        pointFormat: '{point.x:%e. %b}: {point.y:.2f} m'
    },

    plotOptions: {
        spline: {
            marker: {
                enabled: true
            }
        }
    },

    series: [{
        name: 'Winter 2012-2013',
        // Define the data points. All series have a dummy year
        // of 1970/71 in order to be compared on the same x axis. Note
        // that in JavaScript, months start at 0 for January, 1 for February etc.
        data: [
            [Date.UTC(1970, 9, 21), 0],
            [Date.UTC(1970, 10, 4), 0.28],
            [Date.UTC(1970, 10, 9), 0.25],
            [Date.UTC(1970, 10, 27), 0.2],
            [Date.UTC(1970, 11, 2), 0.28],
            [Date.UTC(1970, 11, 26), 0.28],
            [Date.UTC(1970, 11, 29), 0.47],
            [Date.UTC(1971, 0, 11), 0.79],
            [Date.UTC(1971, 0, 26), 0.72],
            [Date.UTC(1971, 1, 3), 1.02],
            [Date.UTC(1971, 1, 11), 1.12],
            [Date.UTC(1971, 1, 25), 1.2],
            [Date.UTC(1971, 2, 11), 1.18],
            [Date.UTC(1971, 3, 11), 1.19],
            [Date.UTC(1971, 4, 1), 1.85],
            [Date.UTC(1971, 4, 5), 2.22],
            [Date.UTC(1971, 4, 19), 1.15],
            [Date.UTC(1971, 5, 3), 0]
        ]
    }, {
        name: 'Winter 2013-2014',
        data: [
            [Date.UTC(1970, 9, 29), 0],
            [Date.UTC(1970, 10, 9), 0.4],
            [Date.UTC(1970, 11, 1), 0.25],
            [Date.UTC(1971, 0, 1), 1.66],
            [Date.UTC(1971, 0, 10), 1.8],
            [Date.UTC(1971, 1, 19), 1.76],
            [Date.UTC(1971, 2, 25), 2.62],
            [Date.UTC(1971, 3, 19), 2.41],
            [Date.UTC(1971, 3, 30), 2.05],
            [Date.UTC(1971, 4, 14), 1.7],
            [Date.UTC(1971, 4, 24), 1.1],
            [Date.UTC(1971, 5, 10), 0]
        ]
    }, {
        name: 'Winter 2014-2015',
        data: [
            [Date.UTC(1970, 10, 25), 0],
            [Date.UTC(1970, 11, 6), 0.25],
            [Date.UTC(1970, 11, 20), 1.41],
            [Date.UTC(1970, 11, 25), 1.64],
            [Date.UTC(1971, 0, 4), 1.6],
            [Date.UTC(1971, 0, 17), 2.55],
            [Date.UTC(1971, 0, 24), 2.62],
            [Date.UTC(1971, 1, 4), 2.5],
            [Date.UTC(1971, 1, 14), 2.42],
            [Date.UTC(1971, 2, 6), 2.74],
            [Date.UTC(1971, 2, 14), 2.62],
            [Date.UTC(1971, 2, 24), 2.6],
            [Date.UTC(1971, 3, 2), 2.81],
            [Date.UTC(1971, 3, 12), 2.63],
            [Date.UTC(1971, 3, 28), 2.77],
            [Date.UTC(1971, 4, 5), 2.68],
            [Date.UTC(1971, 4, 10), 2.56],
            [Date.UTC(1971, 4, 15), 2.39],
            [Date.UTC(1971, 4, 20), 2.3],
            [Date.UTC(1971, 5, 5), 2],
            [Date.UTC(1971, 5, 10), 1.85],
            [Date.UTC(1971, 5, 15), 1.49],
            [Date.UTC(1971, 5, 23), 1.08]
        ]
    }]
});
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>

<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>