2015-08-27 91 views
1

嘗試從高位圖刪除零值的列。highcharts刪除零值的間隙(列)

plotOptions: { 
     column: { 
      pointPadding: 0.2, 
      borderWidth: 0, 
     } 
    }, 
    series: [{ 
     name: 'Tokyo', 
     data: [49.9, 0, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4], 

    }, { 
     name: 'New York', 
     data: [83.6, 78.8, null, 93.4, 106.0, 84.5, 105.0, 104.3, 91.2, 83.5, 106.6, 92.3] 

    }, { 
     name: 'London', 
     data: [48.9, 38.8, 39.3, 0, 47.0, 48.3, 59.0, 59.6, 52.4, 65.2, 59.3, 51.2] 

    }, { 
     name: 'Berlin', 
     data: [42.4, 33.2, 34.5, 39.7, 0, 75.5, 57.4, 60.4, 47.6, 39.1, 46.8, 51.1] 

    }] 

這裏是演示 http://jsfiddle.net/pirelly/oa1g9rvu/

chart with description

感謝, 維塔利

回答

1

您可以自定義函數負責定位您的列:

var justifyColumns = function(chart) { 
    var categoriesWidth = chart.plotSizeX/(1 + chart.xAxis[0].max - chart.xAxis[0].min), 
    distanceBetweenColumns = 0, 
    each = Highcharts.each, 
    sum, categories = chart.xAxis[0].categories, 
    number; 
    for (var i = 0; i < categories.length; i++) { 
    sum = 0; 
    each(chart.series, function(p, k) { 
     if (p.visible) { 
     each(p.data, function(ob, j) { 
      if (ob.category == categories[i]) { 
      sum++; 
      } 
     }); 
     } 
    }); 
    distanceBetweenColumns = categoriesWidth/(sum + 1); 
    number = 1; 
    each(chart.series, function(p, k) { 
     if (p.visible) { 
     each(p.data, function(ob, j) { 
      if (ob.category == categories[i]) { 
      ob.graphic.element.x.baseVal.value = i * categoriesWidth + distanceBetweenColumns * number - ob.pointWidth/2; 
      number++; 
      } 
     }); 
     } 
    }); 
    } 
}; 

您可以使用chart.plotSizeX等圖表參數來計算列之間的距離。

在這裏你可以找到活生生的例子: http://jsfiddle.net/7o0eq05L/8/

您還可以使用getColumnMetrics的包裝函數

在這裏你可以找到關於延長Highcharts信息: http://www.highcharts.com/docs/extending-highcharts/extending-highcharts

在這裏,你可以找到活圖表示例: http://jsfiddle.net/hgjvpqab/

親切的問候。