当前位置: 代码迷 >> 综合 >> HighStock.js使用-简单示例
  详细解决方案

HighStock.js使用-简单示例

热度:49   发布时间:2024-01-18 03:37:59.0

效果
在这里插入图片描述
实现的效果就是:
在同一个图表中显示三个折线图、柱状图,下方有一个时间区间的选择工具。折线图、柱状图实现自定义颜色。
在整个图表下方是一个数据表格,表格中的数据根据上方时间区间显示所选区间的数据。

实现同一个图表中显示三个折线图、柱状图

html代码

 <div class="col-lg-11"><div id="container" class="chart" style="height: 500px;margin-left: 1px"></div></div>

对应的JavaScript代码

var first = []; //第一个折线图
var second = []; //第二个柱状图
var third = []; //第三个折线图
for (var i = 0; i < data.data.length; i += 1) {
    first.push([Date.parse(data.data[i].FDATE), // 该条数据对应的日期data.data[i].a, // 该条数据的内容]);second.push([Date.parse(data.data[i].FDATE), // 该条数据对应的日期data.data[i].b // 该条数据的内容]);third.push([Date.parse(data.data[i].FDATE), // 该条数据对应的日期data.data[i].c // 该条数据的内容]);
}

初始化HighStock并赋值

Highcharts.stockChart('container', {
    chart: {
    zoomType: 'x',        //通过鼠标拖动哪个轴来缩放图表,就是x轴的时间区间选择工具条},rangeSelector: {
    		//时间选择器,汉化buttons: [{
    type: 'day',		// "millisecond", "second", "minute", "hour", "day", "week", "month", "ytd", "all"count: 1,			//抓取时间(default 1)text: '天'}, {
    type: 'week',count: 1,text: '周'}, {
    type: 'month',count: 1,text: '月'}, {
    type: 'year',count: 1,text: '年'}, {
    type: 'all',text: '全部'}],selected: 1},yAxis: [{
     // y轴的样式labels: {
    align: 'left'},height: '40%',resize:{
    enabled:true}}, {
    labels: {
    align: 'left'},top: '40%',height: '30%',offset: 0,resize:{
    enabled:true}}, {
    labels: {
    align: 'left'},top: '70%',height: '30%',offset: 0,resize:{
    enabled:true}}],xAxis: [{
     // x轴的样式minRange: 3600000, // 最小的时间区间events:{
     // 时间区间发生变化时触发事件afterSetExtremes: function(e) {
    var min = timeChange(e.min); // 当前时间区间的最小值var max = timeChange(e.max); // 当前时间区间的最大值/*things to do 在这里调用要执行的方法等 */}}}],series: [{
     // 第一个折线图的样式及内容type: 'area',name: 'a',data: first,color:'#1e90ff',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')]]},}, {
    // 第二个柱状图的样式及内容type: 'column',name: 'b',data: second,yAxis: 1,color:'#1e90ff',}, {
    // 第三个折线图的样式及内容type: 'area',name: 'c',data: third,yAxis: 2,color:'#1e90ff',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')]]},}],plotOptions: {
    series: {
    showInNavigator: true}},responsive: {
    rules: [{
    condition: {
    maxWidth: 800},chartOptions: {
    rangeSelector: {
    inputEnabled: false}}}]},tooltip: {
     shared: true,formatter: function () {
     // 自定义tip提示框的格式var s = '<b>' + Highcharts.dateFormat('%Y,%b,%e,%A', this.x) + '</b>'; // 格式化时间s += '<br/>a:'+ this.points[0].y + '' +'<br/>b:'+ this.points[1].y + '' +'<br/>c:'+ this.points[2].y + '';return s;}}
});

格式化时间

function tineChange(time){
    
var date = new Date(time);//时间戳为10位需*1000,时间戳为13位的话不需乘1000var Y = date.getFullYear() + '-';var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';var D = date.getDate() < 10 ? '0'+date.getDate() + ' ': date.getDate() + ' ';var h = date.getHours() < 10 ? '0'+date.getHours() + ':' : date.getHours() + ':';var m = date.getMinutes() < 10 ? '0'+date.getMinutes() + ':' : date.getMinutes() + ':';var s = date.getSeconds()< 10 ? '0'+date.getSeconds() : date.getSeconds();return Y+M+D+h+m+s;
}

参考

前端开发中,js时间与时间戳的转换
HighCharts中文网