javascript - 来自 JSON 的 x 轴上的 Highcharts.js DateTime 仅显示数字

标签 javascript asp.net-mvc datetime highcharts

我正在努力使用 highcharts.js 绘制简单的折线图。 我有一些来自 asp.net mvc Controller 的 json 数据:

public JsonResult GetSensorLineData(string SensorName)
    {
        List<SensorMeasurement> result= this.SQLSensorMeasuresRepository.FindAllMeasurements(SensorName).ToList();

        List<string> days = new List<string>();
        List<decimal> values = new List<decimal>();

        foreach (var item in result)
        {
            values.Add(item.Value);
            days.Add(item.DateTime.ToString());
        }

        dynamic data = new
        {
            Categories=days,
            Values = values
        };

        return Json(data, JsonRequestBehavior.AllowGet);
    }

在我的 cshtml 文件中,我这样做:

 homeDataService.init('@this.BaseUrl()');

        homeDataService.getTemperatureLineData("Roomtemperature", function myfunction(data) {
            var dataCategories=[];

            for (var i = 0; i < data.Categories.length; i++) {
                var strVal = data.Categories[i];
                var dateTimeParts = strVal.split(" ");
                var datePart = dateTimeParts[0];
                var timePart = dateTimeParts[1];

                var dateParts = datePart.split(".");
                var timeParts = timePart.split(":"); //german DateTime String coming from ASP.NET


                var date = new Date(dateParts[2], (dateParts[1] - 1), dateParts[0], timeParts[0], timeParts[1]);
                data.Categories[i]=(date.getTime());

            }
            var chart;
            $('#temperature-line').highcharts({
                chart: {
                    type: 'line'
                },
                title: {
                    text: ''
                },
                subtitle: {
                    text: ''
                },
                xAxis: {
                    type: 'datetime',
                    categories:data.Categories,
                    minorTickInterval: 10,
                    minTickInterval:10,

                },
                yAxis: {
                    min: 0,
                    title: {
                        text: 'Temperature'
                    }
                },

                plotOptions: {
                    column: {
                        pointPadding: 0.2,
                        borderWidth: 0
                    }
                },
                series: [{
                    name: 'Temperature',
                    data: data.Values
                }]
            });

        });

如您所见,我正在转换德语日期时间,以便 highcharts 可以解释它。然而事实并非如此。我只得到这个输出: enter image description here

更新: 好的,现在我从 Controller 返回:

enter image description here

我将图表代码更改为(见下文),但是当我运行它时,浏览器只是挂起。我做错了什么?

var chart;
            $('#temperature-line').highcharts({
                chart: {
                    type: 'line'
                },
                title: {
                    text: ''
                },
                subtitle: {
                    text: ''
                },
                xAxis: {
                    type: 'datetime'

                },
                yAxis: {
                    min: 0,
                    title: {
                        text: 'Temperature'
                    }
                },

                plotOptions: {
                    column: {
                        pointPadding: 0.2,
                        borderWidth: 0
                    }
                },
                series: [{
                    name: 'Temperature',
                    data: data
                }]
            });

        });

最佳答案

您不能同时使用日期时间轴和类别 - 对于轴类型,它只能是一个或另一个。

您需要删除类别,并将时间戳作为数据 x 值发送,或者按照您希望的显示方式设置日期格式并将其用作类别。

如果您要显示时间序列数据,使用日期时间值而不是类别总是更有意义。

关于javascript - 来自 JSON 的 x 轴上的 Highcharts.js DateTime 仅显示数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16086888/

相关文章:

javascript - html 中的 [$NUM] 是什么意思?

javascript - 在 jquery.ajax 中重新使用变量

asp.net-mvc - MVC ASP NET 中针对所有错误的自定义错误页面

php - 将日期值(字符串)转换为具有不同时区的时间戳

javascript - screen.availHeight 和 window.height() 的区别

javascript - 使用一个可观察数组 knockout 多个动态文本框

Javascript/AJAX 操作无法在 @foreach 循环中的每个实例上运行 (MVC C#)

asp.net-mvc - ValidationAttribute.ErrorMessage 中的替换参数

php - 无法解析日期时间类型

python - 有没有办法使用没有年份的 datetime.date ?