如何删除 Highcharts 中没有数据点的轴标签?

How to remove axis labels without data points in Highcharts?

我正在使用 x 轴 minRange 让我的数据点始终从 x 轴的左侧开始。我的数据集最多可以有 9 个点。每当我的集合只有一个或几个数据点时,如果我没有将 minRange 设置为正确的值,这些数据点最终将集中在图表中。我的 x 轴设置为 categories: [] 以将我的时间值用作字符串而不是日期值。问题是,当我只有两个数据点和 minRange = 9 时,我将有七个轴标签,编号为 2-9,没有数据点。我怎样才能去掉这些标签?

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

另一种方法是手动将类别列表提供给 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", "", "", "", "", "", "", ""]。

我会为此使用 tickPositions。 您可以在用于构建数据的同一循环中构建 tickPositions 数组,只需添加:

tickPositions.push(i);

示例: