2015-02-24 46 views
0

我正在使用x軸minRange以使我的數據點始終從x軸左側開始。我的數據集最多可以有9個點。每當我的組只有一個數據點或幾個數據點時,如果我沒有將minRange設置爲適當的值,這些將最終集中在圖中。我的x軸設置爲categories: []將我的時間值用作字符串而不是日期值。問題是,當我只有兩個數據點和minRange = 9時,我將有七個軸標籤,編號爲2-9,沒有數據點。我如何刪除這些標籤?如何刪除Highcharts中沒有數據點的軸標籤?

Fiddle

var json = [{"price":"15","time":"12:00"},{"price":"20","time":"12:30"}]; 
var processed_json = new Array(); 
$.map(json, function (obj, i) { 
    processed_json.push({name: obj.time,y: parseInt(obj.price) }); 
}); 

$('#container').highcharts({ 
     xAxis: { 
      categories: [], 
      minRange: 9, 
      min: 0 
     }, 
     yAxis: { 
      minRange: 30 
     }, 
     series: [{ 
      data: processed_json 
     }] 
    }); 

回答

2

我會用這個tickPositions。 您可以通過簡單地將建立在同一個循環中tickPositions陣列,您正在使用,以建立自己的數據:

tickPositions.push(i); 

例子:

+0

這裏有兩個很好的答案。你只需要一個額外的變量,並且很好地利用了'tickPositions'。真的很優雅。謝謝! – 2015-02-25 00:16:47

1

另一種方式來做到這一點是手動提供的類別列表中highcharts庫。這個想法是讓類別與您的數據點相對應,並以obj.time命名,其餘類別只是空字符串。

var categoryCount = 10; 
var json = [{"price":"15","time":"12:00"},{"price":"20","time":"12:30"}]; 
var processed_json = new Array(); 
var categories = new Array(categoryCount); 
categories.fill("", 0, categoryCount); //Fill list of categories with empty strings 

$.map(json, function (obj, i) { 
    processed_json.push({name: obj.time,y: parseInt(obj.price) }); 
    categories[i] = obj.time; //Set the time for particular category 
}); 

$('#container').highcharts({ 
      xAxis: { 
       categories: categories, 
       minRange: categoryCount - 1, 
       min: 0 
      }, 
      yAxis: { 
       minRange: 30 
      }, 
      plotOptions: { 

      }, 
      series: [{ 
       data: processed_json 
      }] 
     }); 

變量類別應該類似[ 「12:00」, 「12:30」, 「」, 「」, 「」, 「」, 「」, 「」, 「」]在這個特定的案件。

+0

開箱的。很好的答案,比其他答案涉及更多的步驟,但是非常有用,因爲它可以徹底解釋發生了什麼。謝謝! – 2015-02-25 00:21:02