玩转Highcharts图表库系列(四) 散点图和曲线图的混合显示

Highcharts提供了多种类型的图表形式,在其中文网上可以查看到各种示例。下面要分享的案例是同时显示当日数据和历史参考数据,但是把历史参考数据显示成散点图的形式,当日数据显示为曲线。

这里写图片描述

图截的日期不是很好,当时只显示了历史参考数据的散点图,因为当日没有数据进数据库,也就获取不到数据,不过从下方的图例可以看出来。

// 散列图和曲线图的混合图
        function chartsMixed(renderTo) {
            return {
                chart: {
                    zoomType: 'x',
                    renderTo: renderTo,
                    shadow: true //外框阴影
                    //marginRight: 10
                },
                title: {
                    text: ''
                },
                subtitle: {
                    text: '',
                    x: -20
                },
                xAxis: {
                    labels: {
                        align: 'right',
                        style: {
                            rotation: 0,
                            fontSize: '13px',
                            fontFamily: 'Verdana, sans-serif'
                        },
                        formatter: function () {
                            if (this.value > 86400 || this.value < 0)
                                return '';
                            else {
                                var hour = Math.floor(this.value / 3600) > 9 ? Math.floor(this.value / 3600) : '0' + Math.floor(this.value / 3600);
                                var minute = Math.floor((this.value % 3600) / 60) > 9 ? Math.floor((this.value % 3600) / 60) : '0' + Math.floor((this.value % 3600) / 60);
                                var second = (this.value % 60) > 9 ? (this.value % 60) : '0' + (this.value % 60);
                                return hour + ':' + minute + ':' + second;
                            }
                        },
                        step: 1 //步长,可以跳格
                    },
                    min: 0, // 最小是0
                    max: 86400, //最大是24*3600
                    tickLength: 0, //主刻度的长度
                    tickWidth: 0, // 主刻度的宽度
                    startOnTick: true,
                    endOnTick: true,
                    showFirstLabel: false,
                    showLastLabel: true
                },
                yAxis: {
                    title: {
                        text: 'KW'
                    },
                    plotLines: [{
                        value: 0,
                        width: 1//,
                       // color: '#808080'
                    }],
                    min: 0
                },
                tooltip: {
                    crosshairs: [true, true],
                    //shared: true, // 不能共享,否则this.series为null
                    formatter: function () {
                        var hour = Math.floor(this.x / 3600) > 9 ? Math.floor(this.x / 3600) : '0' + Math.floor(this.x / 3600);
                        var minute = Math.floor((this.x % 3600) / 60) > 9 ? Math.floor((this.x % 3600) / 60) : '0' + Math.floor((this.x % 3600) / 60);
                        var second = (this.x % 60) > 9 ? (this.x % 60) : '0' + (this.x % 60);

                        return '<b>' + this.series.name + '</b><br/>' + hour + ':' + minute + ':' + second + '<br/>' + Highcharts.numberFormat(this.y, 2);
                },
                legend: {
                    enabled: true
                },
                plotOptions: {
                    spline: {
                        //color: '#808080',
                        allowPointSelect: true,
                        cursor: 'pointer', //鼠标移到图表上时鼠标的样式 
                        enableMouseTracking: true, //鼠标移到图表上时是否显示提示框 
                        events: {//监听点的鼠标事件  
                            click: function () {
                                var x = event.point.x;
                                var hour = Math.floor(x / 3600) > 9 ? Math.floor(x / 3600) : '0' + Math.floor(x / 3600);
                                var minute = Math.floor((x % 3600) / 60) > 9 ? Math.floor((x % 3600) / 60) : '0' + Math.floor((x % 3600) / 60);
                                var second = (x % 60) > 9 ? (x % 60) : '0' + (x % 60);
                                var time = hour + ':' + minute + ':' + second;
                                ShowMaxSubValues(time);
                            }
                        },
                        lineWidth: 2,
                        marker: {
                            enabled: true, //是否显示点  
                            radius: 2,
                            states: {
                                hover: {
                                    lineWidth:3
                                }
                            },
                            select: {
                                enabled: false//控制鼠标选中点时候的状态  
                            }
                            //symbol: 'square'
                        },
                        states: {
                            hover: {
                                enabled: true, //鼠标放上去线的状态控制
                                lineWidth: 3
                                //lineColor: '#808080'
                            }
                        },
                        visible: true
                        //stickyTracking:true//跟踪
                    },
                    scatter: {
                        cursor: 'pointer', //鼠标移到图表上时鼠标的样式 
                        marker: {
                            radius: 1.5,
                            states: {
                                hover: {
                                    enabled: true//,
                                    //lineColor: 'rgb(100,100,100)'
                                }
                            }
                        },
                        states: {
                            hover: {
                                marker: {
                                    enabled: false
                                }
                            }
                        }
                    }
                },
                series: []

            };
        }

持续更新中。。。

玩转Highcharts图表库系列(一) 显示多条曲线
玩转Highcharts图表库系列(二) 沿X轴设置不同的背景色分辨带
玩转Highcharts图表库系列(三) 给曲线加上点击事件
玩转Highcharts图表库系列(四) 散点图和曲线图的混合显示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值