HighChar 详解-双Y轴-及各

2023-11-15

    网上的例子,数据都是写死的,有点不实用吧

我在这里举一个,展示功能需求的数据。按需从数据库获取并画图展示  (本例子结合 angular.js,其他前台框架同理 从后台获取数据即可)

1.首先要引入Jquery.JS,再引入相关highChar.js

如果结合前台框架使用的话 ,比如 angular.js vue.js 这些前台框架,要注意引入顺序,highChar.js的引入必须在他们后面

(等等会附上我的代码链接)


2.然后开始解析画图对应的 js代码  

  a. 首先是html或者jsp页面的代码 如下

<div style="width:50%; height:300px;" id="chart2" ></div>
   要有个div来接收画图的效果  通过id标识

  b.然后是 angular,异步获取后台数据,ajax vue 同理。

   score 数据例子:

  score:[

{peopleNum: 5,    totalSale: 200,   goodsName: 苹果},

{peopleNum: 52,  totalSale: 800,   goodsName: 榴莲},

{peopleNum: 11,  totalSale: 300,   goodsName: 水蜜桃}

]

$http.get("/statistics/getGameGuessDetail.shtml", {params: {gameId: gameID}})
    .success(function (data) {//这两行是angular.js 请求后台回去需求数据的方法,
        $scope.model=data; //data是回复的数据, 赋值给 $scope.model    

        drawLines("chart", $scope.model.goods,  //data.goods 是一个比分数组
            {  //drawLines是画图的方法, 如下 将需要显示的数据 传进去 封装给 highChar画出来
                title:'比分投注统计’,
                yis:[
                    {title:"购买人数",field:"peopleNum"}, //需要统计的类型 1
                    {title:"累计收入",field:"totalSale"}],//需要统计的类型 2

                xis:{title:"商品名", field:"goodsName"}})//横坐标

  c.最后就是画图的js代码, 对应 b.中的 drawLines()方法


function drawLines(divId, data,type, option) {            //参数 分别接收 html显示图标的 div的Id-divId
                                                           //type这个可以忽略 ,是设置 字体倾斜度的
                                                           // 要画图的数据--data
                                                           //设置的图表属性--option   就是b.方法中传过来的3个参数
    $("#" + divId).empty();                                //情况  html中 对应 div的 数据
    var series = [];                                       //highChar 画的数据 就是 series这个对象,
        //基础的以苹果为例
    for (var i in option.yis) {                            //封装 数据,存进 series  options.yis 是b.中 yis数组
        var yi = option.yis[i];                             //赋值给yi,例第一条   {title:"购买人数",field:"peopleNum"}

        var se = {name:yi.title, data:[]};                  //设 se对象 name为 yi.title, data 为空数组
        series.push(se);                                    //将se push 存进 series 数组
        var c = 0;                                          //c为统计 需要统计的类型的  总值,比如统计所有商品的总购买人数
        for (var j in data) {                              //遍历 要显示的数据数组
            var item = data[j];                             //item 这时 为苹果 这个对象
            var x =item[option.xis.field] ;                  //设X 为 b.中的 xis的field  即 苹果
            var y = item[yi.field];                         //设y为 对应的   购买人数
            se.data.push([x,y]);                            //push进 se.data 数组
            c += y;                                         //c 最后会等于苹果、榴莲、水蜜桃 总购买人数之和
        }
        if(se.name=='购买人数'){                           //如果为'购买人数的话' 就设置对应的Y周 为第二条Y轴
            se.yAxis=1;
        }else{
            se.yAxis=0;                                    //否为 第一条Y轴 //如果不需要双y轴 这段代码去掉就好,默认为左轴
        }
        se.name += " (" + c + ")";                          //设置总数显示 最后结果为  购买人数(68) 累计收入(1300)

    }
       //以上是 数据的整理封装 成 series  给highChar画  以下设置 画图的布局 样式
    $('#' + divId).highcharts({                              // 对应html的 div-id
        chart: {
            type: 'spline'                                   //画图的类型  spline-折线图,column-柱状图,area-面积图,pie-饼图
        },
        title: {
            text: option.title                                 //设置图表的标题,angular.js传过来的对应的值
        },
        subtitle: {
            text: option.subtitle || ''
        },
        exporting:{                                             //这里配置图表的导出功能为false 没有配置的时候 图表的的右上方会有一个导出的按钮
            enabled:false
        },
        credits : {                                             //这里配置的是取消右下角  Highcharts版权连接 请允许我这么说
            enabled : false
        },
        colors: [                                                 //这里配置的是柱状图/折线图/拼图上那几根柱子/线条/面积/饼块应该是什么颜色的
            '#CC3300',
            '#666FF'
        ],
        //xAxis: {
        //    type: 'datetime',                    //另一种X轴的显示,时间X轴, 有的数据是按时间显示的
        //    dateTimeLabelFormats: {
        //        millisecond: '%H:%M',
        //        second: '%H:%M',
        //        minute: '%H:%M',
        //        hour: '%H:%M',
        //        day:'%m月%d',
        //        month: '%e 月 %b',
        //        year: '%b'
        //    }
        //},

        xAxis:{                                  
            type: 'category',                                          //常规的为 种类X轴显示。
            labels: {
                rotation: type, //字体倾斜
                align: 'right',
                style: { font: 'normal 20px 宋体',
                        color: 'red',
                      fontFamily: 'Verdana, sans-serif',
                      textShadow: '0 0 3px black'
                }
            }
        },
        yAxis: [{                                   //双Y轴 用[]括起来,多轴同理, 单Y轴的话  把 [] 去掉
            min:0,                                   //设置y轴的最小值,  max为设置最大值
            labels: {                                //在labels里可以配置formatter属性可以对y轴设置单位之类的个性化东西
                format: '{value}RMB',
                style: {
                    color: '#89A54E'
                }
            },
            title: {
                rotation: -45,                              //字体倾斜
                text: '累计收入',
                style: {
                    color: '#89A54E'
                }
            },
        },

            {
                title:{
                    rotation: 45,                                   //字体倾斜
                    text:'购买人数',
                    style: {
                        color: '#4572A7'
                    }
                },
                labels: {
                    format: '{value} 人',
                    style: {
                        color: '#4572A7'
                    }
                },
                opposite: true                                       //设置 两条Y轴在位置不一样 双Y周 当然是true,但y周的 话可以不写
            }],

        tooltip: { //提示框
            formatter: function() {
                var s = '<span style="color:#034BA0">'+this.x +'</span>';
                $.each(this.points, function(i, point) {
                    var valy = point.y;
                    var valuestr = valy;
                    s += '<br/><span style=\"'+"color:"+point.series.color+"\">"
                        + point.series.name.split(' ')[0] +'</span>:<b>'
                        + valuestr +'</b>';
                });
                return s;
            },
            shared: true,                                           //是否共用一个提示框
            crosshairs: true
        },
        legend: {
            backgroundColor: '#FFFFFF'
        },
        series: series
    });
}
//我们在js中已经 封装好了,我们来看看series的数据格式。
//series: [{                            //这比较重要  设置X轴显示的柱状图数据的地方  也是一个数组
//                                      //可以看出这里设置了两个类型的柱
//    name:在,                          //横坐标
//    data: data.abnormalOil,            //数据
//    yAxis : 0,                           //对应的y周,默认0 对应 默认的y轴,如果多轴的话,按yAxis中y轴的的顺序 从0递增
//    dataLabels: {     //这个属性可以在柱子上显示的显示数值为多少
//        enabled: true,
//        rotation: 0,
//        color: '#000000',
//        align: 'right',
//        x: 4,
//        y: 10,
//        style: {
//            fontSize: '13px',
//            fontFamily: 'Verdana, sans-serif',
//            textShadow: '0 0 3px black'
//        }
//    }

https://www.hcharts.cn/demo/highcharts/dynamic-update/dark-unica

这个网址,有highChar的各种demo 也可以结合参考下哈

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HighChar 详解-双Y轴-及各 的相关文章

随机推荐

  • 关于电子设计大赛

    一年一度的电子设计大赛选拔赛开始了 作为参加两年的选手还是很有感悟 下面我简单从电赛是什么和经验教训谈论一下 电赛全称全国大学生电子设计大赛 它国赛和省赛交叉进行 是衡量大学生电子设计能力的重要平台 也是用人单位评价别人的基础之一 比赛时间
  • SpringBoot接收前端参数json格式的五种方式

    import java util List import java util Map import org springframework web bind annotation RequestBody import org springf
  • 游戏开发 - 开发流程 - 收集

    1 应用场景 主要用于了解 掌握游戏开发的整个流程 2 学习 操作 1 文档阅读 复习课 带你梳理客户端开发的三个重点 极客时间 2 整理输出 2 1 游戏开发流程 参考 按照游戏开发中的三大模块策划 程序 美术 画了一个图 开发游戏的时候
  • 今天遇到了个问题我本想测试一下Java连接一下redis的,结果。。。。。。

    一开始写好了java程序结果idea连接云服务器上的redis报错 Failed to connect to any host resolved for DNS name 期初我以为是我的Jedis有问题或者是redis conf配置又或者
  • 人工智能数学基础:泰勒(Taylor)公式

    一 引言 对于一些较复杂的函数 为了便于研究 往往希望用一些简单的函数来近似表达 例如 当x gt 0时 sinx arcsinx tanx arctanx ln 1 x ex 1 x 由于用多项式表示的函数 只要对自变量进行有限次加 减
  • STM32发送单极性归零码驱动WS2812(二)

    STM32发送单极性归零码驱动WS2812 二 形容我的心情 二 旧事 重提 时间匆匆过去 也到了该着手准备毕业设计的阶段了 我早早就向老师确定了选题 我想做一个智能灯光控制系统 在灯光选型的问题上 我又想到了几个月前令我头疼好长时间的WS
  • 那些令人惊叹的 HTML、CSS、JavaScript 工具和库

    前端开发很奇妙 它入门很简单 但是想要成为大牛却很难 有太多的事情需要考虑 到处都有需要微调的地方 太多的细节处理才能保证让一切都刚刚好 幸运的是 开发者和设计师一直致力于为我们提供有用的工具和资源 来提高我们的技能 让我们做的更好 所以今
  • Linux安装Phantomjs

    PhantomJS是一个可编程的无头浏览器 无头浏览器 一个完整的浏览器内核 包括js解析引擎 渲染引擎 请求处理等 但是不包括显示和用户交互页面的浏览器 1 页面自动化测试 希望自动的登陆网站并做一些操作然后检查结果是否正常 2 网页监控
  • 机器学习中的流形学习算法 Manifold Learning

    1 流形学习概述 流形学习manifold learning 于2000年在Science杂志上首次提出 是一大类基于流形的框架 是机器学习 模式识别中的一种方法 在维数约简 降维 方面具有广泛的应用 它的主要思想是将高维的数据映射到低维
  • 最新视频/图集去水印/步数/王者战力/红包封面等小程序源码带流量主【源码+教程】

    免服务器域名 已测试 上传即可用带流量主功能 这套源码目前没在网上看到过几次 源码内附带教程 去水印支持快手抖音视频 图集其他平台自测 下载地址 最新视频 图集去水印 步数 王者战力 红包封面等小程序源码带流量主 源码 教程
  • tftp+Filezilla文件双向传输(1)-centos(VMware)-win10(host)

    目录 1 下载安装vsftpd tftp tftp server 2 配置服务 2 1 配置服务 修改文件 etc vsftpd conf 2 2 配置服务 守护进程 etc xinetd d tftp 2 3 配置服务 tftp服务器 2
  • 微信小程序的websocket使用stomp协议--简单实用的npm包

    需求背景 在公司实习期间 要求做一个小程序的websocket连接 用于设备的实时控制和状态查询 其中后端使用的是stomp协议 而微信小程序是不支持stomp协议的 但是当我知道的时候 后端已经全部调好只等我接入了 由于小程序的心跳机制和
  • BST插入(建立)、删除、查找和排序

    实验要求 设计BST 的左右链存储结构 并实现BST插入 建立 删除 查找和排序算法 实现折半查找算法 实验比较 设计并产生实验测试数据 考察比较两种查找方法的时间性能 并与理论结果进行比较 以下具体做法可作为参考 第1组测试数据 n 10
  • 关系代数的自然连接符号_数学——符号推演的艺术

    数学离不开各式各样的符号 数字如2 0 1 8 运算符如 等号 不等号 都是最常见的数学符号 其他语义复杂一些的数学符号有 sin 等等 这些有趣的符号可以用来表示各种具体或者抽象的数学概念 包括数学对象以及数学对象之间的相互关系 而数学活
  • 一、Linux命令行使用技巧

    一 Linux命令行使用技巧 1 新建笔记本 命令 lt gedit gt lt 空格 gt lt 文件名 gt 2 什么是Linux 操作系统 内核 kernel 相当于人的大脑 3 计算机五大组件 计算器 寄存器 控制器 输入设备 输出
  • 三进制计算机_计算机产业有望进入三进制时代:韩国研发出三进制半导体

    韩国一科研团队成功在大尺寸晶圆上实现了更节能的三元金属氧化物半导体 我们知道通常计算机是由一个个逻辑电路组成的 而逻辑电路一般只有接通和断开两种状态 所以计算机中的数据都是以二进制形式存在的 本质上来说计算机就是0和1 最早将二进制这一理念
  • javascript中mouseover和mouseout事件详解

    原文链接 http blog sina com cn s blog 468530a60101awlw html 与 mouseenter 事件不同 不论鼠标指针穿过被选元素或其子元素 都会触发 mouseover 事件 只有在鼠标指针穿过被
  • WIN10家庭版虚拟机启动蓝屏问题

    关于在WIN10家庭版系统上安装VMware workstation每次启动虚拟机 主机就会出现蓝屏得问题 在刚安装好得时候 启动并没有出现蓝屏 但是使用了几次以后蓝屏几乎每次都会出现 网上查了一下发现好多网友也都遇到得了类似得问题 但是每
  • python绘制qq图_Python中作QQ图(quantilequantile Plot)

    Q Q图主要可以用来回答这些问题 两组数据是否来自同一分布 PS 当然也可以用KS检验 利用python中scipy stats ks 2samp函数可以获得差值KS statistic和P值从而实现判断 两组数据的尺度范围是否一致 两组数
  • HighChar 详解-双Y轴-及各

    网上的例子 数据都是写死的 有点不实用吧 我在这里举一个 展示功能需求的数据 按需从数据库获取并画图展示 本例子结合 angular js 其他前台框架同理 从后台获取数据即可 1 首先要引入Jquery JS 再引入相关highChar