echarts与highcharts使用经验

2023-05-16

最近项目涉及到画图表,前后试用了一下highcharts与echarts。highcharts文档详细易懂,上手快捷。highcharts依赖于jQuery库;当结合基于jQuery的zepto使用也可以,例子如下:


<script src="style/js/zepto.min.js"></script>
<script src="style/js/highcharts.js"></script>
<script>
    $(function () {
        var chart;
        $(document).ready(function () {
            var choice = {
                chart: {
                    renderTo: 'container',
                    type: 'line'
                },
                title: {
                    text: '成绩概况',
                    align: 'left',
                    x: 0 //center
                },
                credits: {
                    enabled: false
                },
                xAxis: {
                    title:{
                        text:'成绩(/)'
                    }
//                categories: ['90+', '80+', '70+', '60+', '60以下'],
                },
                yAxis: {
                    title: {
                        text: '次数(/)'
                    },
                    plotLines: [{//y轴分界色
                        value: 0,
                        width: 1,
                        color: '#808080'
                    }]
                },
                plotOptions: {
                    line: {
                        dataLabels: {
                            enabled: true
                        },
                        enableMouseTracking: false
                    }
                },
                tooltip: {
                    valueSuffix: '()'
                },
                legend: {
                    layout: 'vertical',
                    align: 'right',
                    verticalAlign: 'middle',
                    borderWidth: 0
                },
                series: [{
                    name: '次数',
//                data: [9, 8, 4, 6, 7]
                }]
            };
            $.ajax({
                type:"post",
                url:"/",
                data:JSON.stringify(sendData),
                dataType:"json",
                contentType:"application/json",
                success:function (msg) {
                    //
                },
                error:function () {
                    //出错
                    var msg={"array":[{"score":"90+","times":8},{"score":"80+","times":4},{"score":"70+","times":9},{"score":"60+","times":7}]};
                    var tempTimes=[];
                    var tempScore=[];
                    for(var i=0;i<msg.array.length;i++){
                        tempScore.push(msg.array[i].score);
                        tempTimes.push(msg.array[i].times);
                    }
                    choice.xAxis.categories=tempScore;
                    choice.series[0].data=tempTimes;
                    chart=new Highcharts.Chart(choice);
                }

            })
        })
    });
</script>
</html>  
但是项目商用使用highcharts需要付费,因此转用免费的echarts。由于文档不好理解(因此要耐心阅读),对模块化编程不熟悉,摸索了好久才了解如何按照项目需求配置。有三种引入方式:

  • 模块化包引入
  • 模块化单文件引入(推荐
  • 标签式单文件引入
现使用方式一,配置如下:


/*require.config({
    packages: [
        {
            name: 'zrender',
            location: 'style/js/zrender-2.1.1/src',
            main: 'zrender'

        },
        {
            name: 'echarts',
            location: 'style/js/echarts-2.2.7/src',
            main: 'echarts'
        }
    ]
});*/  

方式二:demo如下(用ajax异步加载数据时,需要将require放到ajax请求里面):



<script src="style/js/echarts-2.2.7/build/dist/echarts.js"></script>
<script>
    //将请求数据的函数绑定到onchange()函数,两个下拉分别改变都调用同一个函数
    function request() {
        require.config({
            paths:{
                echarts: 'style/js/echarts-2.2.7/build/dist'
                /*'echarts/chart/bar' : 'style/js/echarts-2.2.7/build/dist/chart/bar'*/
            }
        });
        var selectYear=$("#selectYear option").not(function(){ return !this.selected }).text();//zepto.jsjQuery获取下拉的函数不同
        var selectTerm=$("#selectTerm option").not(function(){ return !this.selected }).val();//zepto.jsjQuery获取下拉的函数不同
        /*var tempTerm=[];
         var tempScore=[];
         for (var i = 0; i < 6; i++) {
         tempTerm[i] = Math.random()*100;
         tempScore[i] = Math.random()*100;
         };
         option.xAxis.data=tempTerm;
         option.series[0].data=tempScore;使用随机函数替代ajax请求也能正确显示数据*/
        var sendData={
            "year":selectYear,
            "semester":selectTerm,
            "account":201330661231
        };
        $.ajax({
            type:"post",
            url:"/",
            data:JSON.stringify(sendData),
            dataType:"json",
            contentType:"application/json",
            success:function (msg) {
                //
            },
            error:function () {
                //当将optionrequire放在error外面时,只能正确显示第一次的数据和图表
                var option = {
                    legend: {
                        data:['成绩']
                    },
                    xAxis :
                    {
                        name:'学期',
                        type : 'category',
                        splitNumber:'8',   //用不上
                        /*data : ['大一上','大一下','大二上','大二下','大三上','大三下','大四上','大四下'],*/
                        axisLabel:{
                            interval: 0,   //解决只显示间隔的坐标
                            rotate:45,     //倾斜度 -90  90 默认为0,令字体倾斜避免重叠
                            textStyle:{
                                color:'#35A3CB'
                            }
                        }
                    }
                    ,
                    yAxis :
                    {
                        name:'成绩(/)',
                        type : 'value',
                        splitArea : {show : true},
                        axisLabel:{
                            textStyle:{
                                color:'#35A3CB'
                            }
                        }
                    }
                    ,
                    series : [
                        {
                            name:'成绩',//用于tooltip的显示,legend 的图例筛选
                            type:'line',
                            /* data:[80, 78, 90, 98, 50, 68, 76, 85],*/
                            itemStyle : { normal: {label : {show: true}}}
                        }
                    ],
                    color:['#35A3CB']
                };
                var msg={"array":[{"term":"大一上","score":10},{"term":"大一下","score":20},{"term":"大二上","score":60},{"term":"大二下","score":30},
                    {"term":"大三上","score":90},{"term":"大三下","score":50},{"term":"大四上","score":70},{"term":"大四下","score":80}]};
                var tempTerm=[];
                var tempScore=[];
                for(var i=0;i<msg.array.length;i++){
                    tempTerm.push(msg.array[i].term);
                    tempScore.push(msg.array[i].score);
                }
                option.xAxis.data=tempTerm;
                option.series[0].data=tempScore;


                require(
                        [
                            'echarts',
                            'echarts/chart/line'
                        ],
                        function (ec) {
                            var myChart = ec.init(document.getElementById('container'));
                            myChart.setOption(option);
                        }
                )
            }
        });

    }
</script>
<script>
    $(document).ready(function () {
        var str="201330551235";//学号
        var distinct=0;//研究生或者本科生
        var temp=parseInt(str.substr(0,4));
        var length;
        if(distinct==1) {
            length = 4;
        }
        else if(distinct==0){
            length=3;
        }
        var selectYear=document.getElementById("selectYear");
        for(var i=0;i<length;i++)
        {
            var enroll=temp+"-"+(++temp);
            selectYear.options[i] = new Option(enroll);//动态添加option
        }
        request();
    })
    function change() {
        request();
    }
</script>
</body>  

3.数组的元素为键值对时,动态添加元素方法:


tempSubject.push({'text':msg.array[i].subject});
  

4.如何找元素嵌套(雷达图比较麻烦):


/*以下两句用于测试option字段变量的嵌套*/
alert(JSON.stringify(option.polar[0].indicator));
alert(JSON.stringify(option.series[0].data[0].value));  

暂且记录问题。。。。

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

echarts与highcharts使用经验 的相关文章

随机推荐

  • mysql 常用脚本整理

    MySQL 来自各种资源 及部分自己实践 添加字段 ALTER TABLE 表名 ADD COLUMN 列名 类型 comment 39 说明 39 ALTER TABLE User ADD COLUMN shorName varchar
  • Docker Center OS7笔记--删除镜像(httpd)

    删除镜像 xff08 httpd xff09 1 docker stop docker ps a q 停止所有容器 2 docker ps a 查看容器 3 docker rm 容器ID 删除容器 删除后 xff0c 就没有容器了 4 do
  • SqlServer 2008R2 10.50.1600.1 升级到 SqlServer 2016

    要从sql server 2008 R2 企业版 直接升级到 2016 企业版 要先把R2升级到SP3这个版本 xff08 注意 xff1a 不是sp1 sp2 sp3的安全更新 坑 xff09 然后去下载2016 去itellyou下载
  • C#委托与事件

    1 什么是委托 委托是C 中的一个引用类型 它允许捕捉对方法的引用 xff0c 并像传递其他对象那样传递该引用 xff0c 也可以像调用其他方法一样调用被捕捉的方法 声明委托需要使用delegate关键字 xff1a span class
  • 数据分发服务 (DDS)及Fast DDS环境搭建

    1 数据分发服务 DDS 数据分发服务 DDS 是一种以 数据为中心的通信协议 xff0c 用于分布式软件应用程序通信 它描述了支持数据提供者和数据消费者之间通信的通信应用程序编程接口 API 和通信语义 由于它是一个以数据为中心的发布订阅
  • Docker管理工具Web UI:DockerUI & Shipyard /portainer

    docker针对于系统工程师或者开发人员来说操作比较简单 一般我们习惯了对着黑黑的屏幕敲命令 xff0c docker pull xff0c docker push xff0c docker run xff0c docker logs xf
  • BeautifulSoup+pandas 爬取新浪国内新闻

    xff08 1 xff09 使用技术 python 3 5 2 sqlite3 pandas requests jupyter notebook xff08 2 xff09 详细代码 新浪国内新闻首页 xff1a http news sin
  • android8.1客制化修改文档

    1 去除设置 系统 关于手机 硬件信息去掉 vendor mediatek proprietary packages apps MtkSettings res xml device info settings xml中删除布局文件 xff0
  • C/C++总结笔记——指针1:野指针、空指针(NULL和nullptr)、悬空指针、智能指针

    C C 43 43 中有几种指针相关的概念 xff0c 只知道有这样的概念 xff0c 但HR一问就露馅 xff0c 这里进行总结方便复习 1 野指针 1 指针定义时未被初始化 xff1a 指针在被定义的时候 xff0c 如果程序不对其进行
  • ARM汇编的编程模式和工作模式

    ARM采用32位架构 ARM 约定 Byte 8bitsHalfword 16bits 2byteWord 32 bits 4bytes ARM core 的指令集 ARM指令集 32 bitThumb指令集 xff08 沙姆 xff09
  • 嵌入式开发内存节约方法(笔记)

    1 不要在 h文件中定义变量 xff0c 可以声明一个extern全局变量 xff0c 定义在某一个 c文件中进行 其他 c文件即可共用 在源文件中引入头文件相当于直接把头文件的内容拷贝到原文件中 xff0c 如果引入这个头文件后 xff0
  • Linux内核进程上下文切换深入理解

    我们知道操作系统的一个重要功能就是进行进程管理 xff0c 而进程管理就是在合适的时机选择合适的进程来执行 xff0c 在单个cpu运行队列上各个进程宏观并行微观串行执行 xff0c 多个cpu运行队列上的各个进程之间完全的并行执行 进程管
  • 尚医通开发笔记(结尾含部分bug修复方法)

    目录 项目简介 xff1a 包含系统 项目架构 前端开发流程 xff1a common模块 swagger2 Result xff08 全局统一返回结果 xff09 YyghException xff08 自定义全局异常 xff09 Glo
  • 树莓派上的软件安装和卸载命令汇总

    基础命令 安装软件 apt get install softname1 softname2 softname3 卸载软件 apt get remove softname1 softname2 softname3 卸载并清除配置 apt ge
  • ubuntu安装KDE桌面环境

    ubuntu安装KDE桌面环境 打开shell环境 xff0c 执行sudo apt get install kubuntu desktop xff0c 然后会提示一大堆的软件包要安装 xff0c 注意安装好之后有1G多 lxc 64 lx
  • 游戏开发书籍推荐

    游戏开发书籍推荐 xff08 1 3 1 Windows游戏编程大师技巧 xff08 第二版 xff09 原名 xff1a Tricks of the Windows Game Programming Gurus 2nd 作者 xff1a
  • ROS实战之ROS组网的搭建

    搭建ROS组网 工具 xff1a 台式机 xff08 Ubuntu xff09 xff1a 192 168 2 101 笔记本 xff08 虚拟机 xff09 xff1a 192 168 2 106 步骤 xff08 此处以在笔记本中运行r
  • Mavlink协议(第二版)

    文章目录 协议简介一 Mavlink协议主要特点 二 数据结构不兼容标志 MAVLink 2 兼容性标志 MAVLink 2 有效载荷格式MAVLink 2 的数据包格式 三 航点协议四 参数的读写五 增加新的mavlink消息六 消息的发
  • IMU模块ADIS16448调试过程及经验总结

    ADIS16448集成了陀螺仪 加速度计 磁力计及气压计为一体的IMU模块 xff0c 我在这里总结下此模块的使用及调试经验 首先说下硬件环境 xff1a MCU为TMS320C6722 xff08 DSP xff09 xff1b IMU为
  • echarts与highcharts使用经验

    最近项目涉及到画图表 xff0c 前后试用了一下highcharts与echarts highcharts文档详细易懂 xff0c 上手快捷 highcharts依赖于jQuery库 xff1b 当结合基于jQuery的zepto使用也可以