highcharts用零值删除间隙(列) [英] highcharts remove gap (column) with zero value

查看:120
本文介绍了highcharts用零值删除间隙(列)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  plotOptions:{
列:{
pointPadding:0.2,
borderWidth:0,
}
},
系列:[{
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],

},{
名称:'纽约',
数据:[83.6,78.8,null,93.4,106.0,84.5,105.0,104.3,91.2,83.5,106.6,92.3]

},{
名称:'伦敦',
数据:[48.9,38.8,39.3,0,47.0,48.3,59.0,59.6,52.4,65.2,59.3,51.2]

},{
名称:'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]

}]

这里是演示



谢谢,
Vitaliy

解决方案

您可以让自定义函数负责定位您的列:

  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/



亲切的问候。

Trying to remove column with zero value from 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]

    }]

here is demo http://jsfiddle.net/pirelly/oa1g9rvu/

Thanks, Vitaliy

解决方案

You can make custom function responsible for positioning your columns:

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++;
          }
        });
      }
    });
  }
};

You can use you chart parameters like chart.plotSizeX for calculating distance between your columns.

Here you can find live example: http://jsfiddle.net/7o0eq05L/8/

You can also use wrapper of getColumnMetrics function

Here you can find information about extending Highcharts: http://www.highcharts.com/docs/extending-highcharts/extending-highcharts

And here you can find live example of chart: http://jsfiddle.net/hgjvpqab/

Kind regards.

这篇关于highcharts用零值删除间隙(列)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆