elasticsearch,highcharts,Javascript,elasticsearch,Highcharts" /> elasticsearch,highcharts,Javascript,elasticsearch,Highcharts" />

Javascript 适用于分组日期时间数据图表的工具提示

Javascript 适用于分组日期时间数据图表的工具提示,javascript,elasticsearch,highcharts,Javascript,elasticsearch,Highcharts,我有大量数据,日期时间在x轴上,计数在y轴上。以前,数据分组是由前端的highcharts完成的。我将数据分组转移到服务器端。以前,当数据分组时,工具提示是适当的,这意味着它将告诉数据从何处分组,例如从周二14:00-16:00。现在我有了时间间隔,但工具提示只显示了一个点,即周二14:00 <!DOCTYPE html> {% load staticfiles %} <html lang="en"> <head> <meta http-equiv="C

我有大量数据,日期时间在x轴上,计数在y轴上。以前,数据分组是由前端的highcharts完成的。我将数据分组转移到服务器端。以前,当数据分组时,工具提示是适当的,这意味着它将告诉数据从何处分组,例如从周二14:00-16:00。现在我有了时间间隔,但工具提示只显示了一个点,即周二14:00

<!DOCTYPE html>
{% load staticfiles %}
<html lang="en">
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1"/>
<!--===============================================================================================-->  
<!--===============================================================================================-->

<body>


<div id="container">
<div id="container1" style="width: 500px; height: 400px; margin: 0 " align="left"></div>
</div>


    <script src="{% static 'js/highstock.js'%}"></script>
<script src="{% static 'vendor/jquery/jquery-3.2.1.min.js' %}"></script>    
<script>
function afterSetExtremes(e) {
var chart = Highcharts.charts[0];
    chart.showLoading('Loading data from server...');
        $.getJSON(src, function (data){
        chart.series[0].setData(data);
        chart.hideLoading();
    });


}

var country='{{country|safe}}'
src=window.location.toString()
src=src.replace("timeline","timeline_data")

$.getJSON(src, function (data) {
var tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
    data = [].concat(data, [[tomorrow, null, null, null, null]]);
var chart = Highcharts.stockChart('container', {

        chart: {
            height: 400
        },

        title: {
            text: 'Tweets Timeline'
        },
    navigator: {
            adaptToUpdatedData: false,
            series: {
                data: data
            }
        },
        scrollbar: {
            liveRedraw: false
        },


    xAxis: {
             gapGridLineWidth: 0,       
         events: {
         afterSetExtremes:afterSetExtremes
         },

     },

    yAxis:{
     text:'Tweets Count',
     min:0,
     minRange: 0
     }
 ,
       rangeSelector: {
            buttons: [{
                type: 'hour',
                count: 1,
                text: '1H'
            }, {
                type: 'day',
                count: 1,
                text: '1D'
            },
{
                type: 'month',
                count: 1,
                text: '1M'
            },
{
                type: 'year',
                count: 1,
                text: '1Y'
            },
            {
                type: 'all',
                count: 1,
                text: 'All'
            }],
            selected:4,
            inputEnabled: false
        },

        series: [{
            name: 'Tweets Count',
            data: data,
        dataGrouping: {
                enabled: false
            },
        type:'area',
            gapSize: 5,
            tooltip: {
                valueDecimals: 0
            },
            fillColor: {
                linearGradient: {
                    x1: 0,
                    y1: 0,
                    x2: 0,
                    y2: 1
                },
                stops: [
                    [0, Highcharts.getOptions().colors[0]],
                    [1, Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0).get('rgba')]
                ]
            },
            threshold: null
        }], 

        responsive: {
            rules: [{
                condition: {
                    maxWidth: 500
                },
                chartOptions: {
                    chart: {
                        height: 300
                    },
                    subtitle: {
                        text: null
                    },
                    navigator: {
                        enabled: false
                    }


                }
            }]
        }
    });   

});


    </script>
    </body>
</html>

{%load staticfiles%}
函数后极值(e){
var图表=高位图表。图表[0];
showLoading('loadingdatafromserver…');
$.getJSON(src,函数(数据){
chart.series[0].setData(数据);
chart.hideLoading();
});
}
var country='{country | safe}}'
src=window.location.toString()
src=src.replace(“时间线”、“时间线\数据”)
$.getJSON(src,函数(数据){
var明天=新日期();
明天.setDate(明天.getDate()+1);
data=[].concat(数据,[[tomory,null,null,null]]);
var chart=Highcharts.stockChart('容器'{
图表:{
身高:400
},
标题:{
文字:“推特时间线”
},
导航器:{
AdaptToUpdateData:错误,
系列:{
数据:数据
}
},
滚动条:{
利维德劳:错
},
xAxis:{
gapGridLineWidth:0,
活动:{
余弦:余弦
},
},
亚克斯:{
文字:'Tweets Count',
分:0,,
最小范围:0
}
,
范围选择器:{
按钮:[{
键入:“小时”,
计数:1,
文本:“1H”
}, {
键入:'天',
计数:1,
文本:“1D”
},
{
键入:“月”,
计数:1,
文字:“1M”
},
{
类型:'年',
计数:1,
文本:“1Y”
},
{
键入:“全部”,
计数:1,
文字:“全部”
}],
选定:4,
输入:假
},
系列:[{
名称:“推特计数”,
数据:数据,
数据分组:{
已启用:false
},
类型:'区域',
昏睡:5,
工具提示:{
数值小数:0
},
填充颜色:{
线性梯度:{
x1:0,
y1:0,
x2:0,
y2:1
},
停止:[
[0,Highcharts.getOptions().Color[0]],
[1,Highcharts.Color(Highcharts.getOptions().colors[0])。setOpacity(0)。get('rgba')]
]
},
阈值:空
}], 
响应:{
规则:[{
条件:{
最大宽度:500
},
图表选项:{
图表:{
身高:300
},
副标题:{
文本:空
},
导航器:{
已启用:false
}
}
}]
}
});   
});

我还想知道数据分组是否正确。我使用了elasticsearch的auto_date_直方图对数据进行分组。它是否合适?

Hi@samiullah ilyas,您可以在数据中添加一些关于时间的附加信息,并在工具提示中显示。在您的情况下,数据是作为常规点处理的,而不是作为分组点处理的。我如何向时间添加其他信息?是否将其添加到序列数据中?i、 例如[timestamp interval,count]这可能吗?我不知道您的数据格式,但可以-您可以通过
键映射自定义属性。例子: