Javascript 并非所有类别都显示在条形图中

Javascript 并非所有类别都显示在条形图中,javascript,highcharts,highstock,Javascript,Highcharts,Highstock,我正在尝试创建一个包含大量数据的highchart。下面是我为创建它而编写的代码。但不知何故,在X轴上,并不是所有类别都显示出来。这是小提琴 有两种不同的情况正在影响这一点 1) 您正在将x轴min设置为1。第一个类别从0开始,因此您告诉图表跳过它 2) 您的第三、第四和第五个数据点都列为同一类别,因此它将它们都与轴上的同一类别相关联。它不会重复类别-如果在数据点中这样指定类别,则类别必须是唯一的 例如: xAxis: { type: 'category', min: 0,

我正在尝试创建一个包含大量数据的highchart。下面是我为创建它而编写的代码。但不知何故,在X轴上,并不是所有类别都显示出来。这是小提琴


有两种不同的情况正在影响这一点

1) 您正在将x轴
min
设置为
1
。第一个类别从
0
开始,因此您告诉图表跳过它

2) 您的第三、第四和第五个数据点都列为同一类别,因此它将它们都与轴上的同一类别相关联。它不会重复类别-如果在数据点中这样指定类别,则类别必须是唯一的

例如:

  xAxis: {
    type: 'category',
    min: 0,
    max: 14
  },
  series: [{
      name: 'Count',
      data: [
        ["Bangalore to Chennai", 40],
        ["Bangalore to Madurai", 55],
        ["Bangalore to Chennai2", 40],
        ["Bangalore to Chennai3", 40],
        ["Bangalore to Chennai4", 40]
      ]
    }]
更新了小提琴,将x轴最小值设置为0,并编辑了类别名称:


问题在于@jlbiggs提到的那一点

我为第二点(唯一名称)添加了一个hack,以在xAxis中显示正确的标签

尝试使用图表加载事件检查数据中的每个名称。如果当前名称与上一个名称匹配,则向其添加一个空格(名称长度与上一个名称长度不同,它将成为一个不同的名称,但外观相同),然后形成新数组并使用此数组更新图表系列

chart: {
type: 'bar',
  marginLeft: 150,
  marginBotton: 50,
  events: {
    load: function() {
      var series_data = this.series[0].data; 
      var current_item;
      var spaces=""
      var datas=[]
      for (var i = 0; i < series_data.length; i++) {
            current_item=series_data[i].name
            if(current_item==series_data[i].name){
          spaces+=" ";
                var sName=series_data[i].name+spaces
              datas.push([sName,series_data[i].y])
          }else{
          spaces=""

          datas.push([series_data[i].name,series_data[i].y])
          }

      }
                this.update({
        series: {
          data: datas
        },
      });

    }
  }
},
图表:{
类型:'bar',
边缘左:150,
马金伯顿:50,
活动:{
加载:函数(){
var series_data=this.series[0]。数据;
当前项目的var;
var spaces=“”
变量数据=[]
对于(变量i=0;i
我个人认为你应该用这个例子

chart: {
type: 'bar',
  marginLeft: 150,
  marginBotton: 50,
  events: {
    load: function() {
      var series_data = this.series[0].data; 
      var current_item;
      var spaces=""
      var datas=[]
      for (var i = 0; i < series_data.length; i++) {
            current_item=series_data[i].name
            if(current_item==series_data[i].name){
          spaces+=" ";
                var sName=series_data[i].name+spaces
              datas.push([sName,series_data[i].y])
          }else{
          spaces=""

          datas.push([series_data[i].name,series_data[i].y])
          }

      }
                this.update({
        series: {
          data: datas
        },
      });

    }
  }
},