【问题标题】:not able ot show date in x axis in highcharts无法在高图中的 x 轴上显示日期
【发布时间】:2020-01-09 19:12:22
【问题描述】:

我想在 x asis 中显示日期,但无法显示。在图中显示像 00.00.00.100 这样的值。无法在 javascript 中将 1577844000000 转换为正确的日期、月份、年份,以便使用 highcharts 中的 dateTimeLabelFormats 在 x 轴上显示。如何使用刻度以及如何在图表中显示它。 刻度值正在像这样在控制台中打印。 样本滴答数据

    1577844000000
    1577843100000
    1577842200000
    1577841300000
    15778404000

响应中的样本数据

DeviceTimeStamp: "2020-01-10T00:30:00"

代码

  getalldata();

                    function getalldata() {
                        var xhttp_roomlogs = new XMLHttpRequest();
                        xhttp_roomlogs.onreadystatechange = function () {
                            if (this.readyState == 4 && this.status == 200) {
                                var response = JSON.parse(xhttp_roomlogs.responseText);

                                 var Ch1Temp = [];
                                 var Ch2Temp = [];

                        $(response).each(function (i, item) {
                            var date = UtcToIst(item.DeviceTimeStamp);
                            var ticks = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());
                            Ch1Temp.push([ticks, item.Ch1Temp])
                            Ch2Temp.push([ticks, item.Ch2Temp])//
                        });

                        $('#container').empty();
                                var labels = response.map(function (e) {
                                    var roomtempdata = e.Ch1Temp;
                                    return parseFloat(roomtempdata);
                                })
                                var ch2temp = response.map(function (e) {
                                    var roomtempdata = e.Ch2Temp;
                                    return parseFloat(roomtempdata);
                                })

                                Highcharts.chart('container', {
                                    credits: {
                                        enabled: false
                                    },
                                    title: {
                                        text: 'Chamber 1 & 2 Temp'
                                    },

                                    subtitle: {
                                        text: 'in Degree Celcius'
                                    },
                                    xAxis: {
                                        type: 'datetime',
                                        dateTimeLabelFormats: { // don't display the dummy year
                                        month: '%e. %b',
                                        year: '%b'
                                },
                                title: {
                                    text: 'Date'
                                }
                                    },
                                    yAxis: {
                                        title: {
                                            text: 'Temperature'
                                        }
                                    },
                                    legend: {
                                        layout: 'vertical',
                                        align: 'right',
                                        verticalAlign: 'middle'
                                    },

                                    //y co-ordinates
                                    series: [{
                                        name: 'Chamber 1 Temp',
                                        data: labels
                                    },
                                    {
                                        name: 'Chamber 2 Temp',
                                        data: ch2temp
                                    }


                                    ],
                                    responsive: {
                                        rules: [{
                                            condition: {
                                                maxWidth: 500
                                            },
                                            chartOptions: {
                                                legend: {
                                                    layout: 'horizontal',
                                                    align: 'center',
                                                    verticalAlign: 'bottom'
                                                }
                                            }
                                        }]
                                    }

                                });

                                //highcharts end
                            }
                        };

                        xhttp_roomlogs.open("GET", "/api/data", true);

                     xhttp_roomlogs.send();
                    }

                    function UtcToIst(data) {
                        var dt = new Date(data);
                        return dt;
                    }

【问题讨论】:

  • 你能提供一个 JSFiddle 或 CodePen 吗?图像几乎看不到。
  • jsfiddle.net/kwtZr/1 但我没有保留工作 api。
  • 嗨@krishna mohan,您需要将日期值转换为时间戳。

标签: javascript jquery ajax datetime highcharts


【解决方案1】:

您可以使用以下方法转换 json 日期:

var jsonDate = "\/Date(1577844000000)\/".substr(6);
var dateObject = new Date(parseInt(jsonDate ));
var stringDate = (dateObject.getMonth() + 1) + "/" + dateObject.getDate() + "/" + dateObject.getFullYear();
console.log("Dat Object:" + dateObject);
console.log("String Date:" + stringDate);

示例hightchart代码:

Highcharts.chart('container', {
    chart: {
            type: 'column'
        },
        xAxis: {
            categories: ['1/1/2020', '1/2/2020', '1/3/2020', '1/4/2020', '1/5/2020']
        },
        plotOptions: {
            column: {
                stacking: 'normal'
            }
        },
        legend: {
            labelFormatter: function () {
                if(this.data.length > 0) {
			        return this.data[0].category;
                } else {
                    return this.name;
                }
		    }
        },
        series: [{
            data: [{x:0,y:1}],
            name: '1/1/2020'
        },{
            data: [{x:1,y:1}],
            name: '1/2/2020'
        },{
            data: [{x:2,y:1}],
            name: '1/3/2020'
        },{
            data: [{x:3,y:1}],
            name: '1/4/2020'
        },{
            data: [{x:4,y:1}],
            name: '1/5/2020'
        }]
});
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script src="https://code.highcharts.com/modules/export-data.js"></script>
<script src="https://code.highcharts.com/modules/accessibility.js"></script>

<figure class="highcharts-figure">
    <div id="container"></div>
</figure>

【讨论】:

  • 值现在在控制台中变得正确,但是如何在 x 轴中输入任何想法?
  • 更新了这个示例是否解决了您的问题?
  • 因为我认为您的 hightcharts 代码缺少类别部分
  • 感谢更新图表正在工作,但我主要关心的是数据何时超过。它以垂直方式显示日期。我只想显示几个日期,我正在尝试一些刻度或日期时间标签格式。请尝试使用大约 20 个值的相同代码,你会发现问题
  • 这是 hightcharts 的响应行为,当图表无法显示完整列表时,它会尝试以多种方式显示,例如垂直文本和隐藏小值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
  • 1970-01-01
相关资源
最近更新 更多