javascript - 获取x轴标签到表格的第一列 - highcharts

标签 javascript html highcharts

我正在尝试从 highcharts 创建一个表。

我正在将所有数据正确地获取到表格中。但作为第一列,我需要 x 轴标签。如何得到它。作为列标题,我需要 date,作为列值,我需要日期值。

参见 jsfiidle demo .

截图:

enter image description here

我正在使用以下代码:

Highcharts.drawTable = function() {

// user options
var tableTop = 310,
    colWidth = 100,
    tableLeft = 20,
    rowHeight = 20,
    cellPadding = 2.5,
    valueDecimals = 1,
    valueSuffix = '';

// internal variables
var chart = this,
    series = chart.series,
    renderer = chart.renderer,
    cellLeft = tableLeft;

// draw category labels
$.each(chart.xAxis[0].categories, function(i, name) {

    renderer.text(
        name, 
        cellLeft + cellPadding, 
        tableTop + (i + 2) * rowHeight - cellPadding
    )
    .css({
        fontWeight: 'bold',


    })       
    .add();
});


$.each(series, function(i, serie) {
    cellLeft += colWidth;

    // Apply the cell text
    renderer.text(
            serie.name,
            cellLeft - cellPadding + colWidth, 
            tableTop + rowHeight - cellPadding
        )
        .attr({
            align: 'right'
        })
        .css({
            fontWeight: 'bold',
            color:'red'
        })
        .add();

    $.each(serie.data, function(row, point) {

        // Apply the cell text
        renderer.text(
                Highcharts.numberFormat(point.y, valueDecimals) + valueSuffix, 
                cellLeft + colWidth - cellPadding, 
                tableTop + (row + 2) * rowHeight - cellPadding
            )
            .attr({
                align: 'right'
            })
            .css({
            fontWeight: 'bold',
            color:'blue'
        })
            .add();

        // horizontal lines
        if (row == 0) {
            Highcharts.tableLine( // top
                renderer,
                tableLeft, 
                tableTop + cellPadding,
                cellLeft + colWidth, 
                tableTop + cellPadding
            );
            Highcharts.tableLine( // bottom
                renderer,
                tableLeft, 
                tableTop + (serie.data.length + 1) * rowHeight + cellPadding,
                cellLeft + colWidth, 
                tableTop + (serie.data.length + 1) * rowHeight + cellPadding
            );
        }
        // horizontal line
        Highcharts.tableLine(
            renderer,
            tableLeft, 
            tableTop + row * rowHeight + rowHeight + cellPadding,
            cellLeft + colWidth, 
            tableTop + row * rowHeight + rowHeight + cellPadding
        );

    });

    // vertical lines        
    if (i == 0) { // left table border  
        Highcharts.tableLine(
            renderer,
            tableLeft, 
            tableTop + cellPadding,
            tableLeft, 
            tableTop + (serie.data.length + 1) * rowHeight + cellPadding
        );
    }

    Highcharts.tableLine(
        renderer,
        cellLeft, 
        tableTop + cellPadding,
        cellLeft, 
        tableTop + (serie.data.length + 1) * rowHeight + cellPadding
    );

    if (i == series.length - 1) { // right table border    

        Highcharts.tableLine(
            renderer,
            cellLeft + colWidth, 
            tableTop + cellPadding,
            cellLeft + colWidth, 
            tableTop + (serie.data.length + 1) * rowHeight + cellPadding
        );
    }

});

最佳答案

您正在使用datetime xAxis,因此您不能在drawTable 代码中使用类别。而是使用包含来自点的所有时间戳的 series[0].xData。参见 demo .

修改部分:

// draw category labels
$.each(chart.series[0].xData, function(i, name) {

    renderer.text(
        Highcharts.dateFormat('%a %d %b', name), 
        cellLeft + cellPadding, 
        tableTop + (i + 2) * rowHeight - cellPadding
    )
    .css({
        fontWeight: 'bold',


    })       
    .add();
});

关于javascript - 获取x轴标签到表格的第一列 - highcharts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24382977/

相关文章:

jquery Ajax - 如何在更改选择元素时复制发布带有名称的按钮(ajax 请求中的动态键名称)

jquery - 在 Highcharts 中格式化 Xaxis 时间日期

javascript - 为什么这个循环不执行我可以手动执行的操作?

javascript - asp.net mvc从action返回对象,并在ajax成功中使用它

jquery - 如何在 Outlook 中制作类似于导航 Pane 的内容?

html - 我使用的数据类型有问题吗? (const char *的参数与LPCTSTR类型的参数不兼容)

javascript - 如何让 Highcharts 图表重绘速度更快?

javascript - HIGHCHARTS:drilldown.js 更改饼图标签颜色

javascript - “Function is not defined” onClick函数内联在ReactJs中的组件?

javascript - Google Analytics API 返回没有正文的 204 响应