百度ECharts初探

ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的 Canvas 类库 ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表。

ECharts 提供了常规的折线图柱状图散点图饼图K线图,用于统计的盒形图,用于地理数据可视化的地图热力图线图,用于关系数据可视化的关系图treemap,多维数据可视化的平行坐标,还有用于 BI 的漏斗图仪表盘,并且支持图与图之间的混搭。

你可以在下载界面下载包含所有图表的构建文件,如果只是需要其中一两个图表,又嫌包含所有图表的构建文件太大,也可以在在线构建中选择需要的图表类型后自定义构建。

ECharts 3 开始独立出了“坐标系”的概念,支持了直角坐标系(catesian,同
grid)、极坐标系(polar)、地理坐标系(geo)。图表可以跨坐标系存在,例如折、柱、散点等图可以放在直角坐标系上,也可以放在极坐标系上,甚至可以放在地理坐标系中。

下面,将参考官方文档给出的数据实现“微博签到数据点亮中国”散点图。

  1. 准备工作:

(1)首先下载ECharts插件,你可以根据自己的实际需求选择你想要下载的版本,也可以自己定制相应功能的版本,下面附上插件的下载地址:http://echarts.baidu.com/download.html

(2)本次教程涉及地图,所以需要引入地图资源,下面附上中国地图JS地址:http://echarts.baidu.com/gallery/vendors/echarts/map/js/china.js,我们选择中国地图。

(3)下载微博签到数据,用于数据展示,下面附上下载地址:http://echarts.baidu.com/gallery/data/asset/data/weibo.json , 将数据保存为weibo.json即可。

新建一个工程,并将下载的文件放到相应的位置,如图所示:

然后新建一个控制器和对应的视图,添加对这些文件的引用,同时引用最新版的JQuery插件,然后新增一个id为main的div做为地图的容器来展现地图。

接着开始写JS脚本来实现我们想要的效果:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <!-- 引入 echarts.js -->
    <script src="js/echarts.js"></script>
    <script src="js/jquery-3.1.1.min.js" ></script>
    <script  src="js/china.js" ></script>
    <script src="js/bootstrap.min.js" ></script>
</head>
<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 1500px;height:900px;">
        
    </div>
    
    <script>   
            //初始化
            var myChart = echarts.init(document.getElementById(‘main‘));
              
            myChart.showLoading();//加载数据前显示的动画效果
              
               //读取微博JSON数据
                $.getJSON(‘json/weibo.json‘, function (weiboData) {
                    myChart.hideLoading();//加载数据完成后隐藏动画
              
                  //定义一个Data方法将读取的微博数据根据经纬度组合成新的JSON,用于显示
                    Data = function (index) {
                        data = weiboData[index];
                        var px = data[0] / 1000;
                        var py = data[1] / 1000;
                        var res = [[px, py]];
              
                        for (var i = 2; i < data.length; i += 2) {
                            var dx = data[i] / 1000;
                            var dy = data[i + 1] / 1000;
                            var x = px + dx;
                            var y = py + dy;
                            res.push([x, y, 1]);
              
                            px = x;
                            py = y;
                        }
                        return res;
                    };
                  
                  //设置参数
                    myChart.setOption(
            option = {
                        backgroundColor: ‘#404a59‘,
                        title: {         //标题组件
                            text: ‘微博签到数据点亮中国‘,
                            subtext: ‘From ThinkGIS‘,
                            sublink: ‘http://www.thinkgis.cn/public/sina‘,
                            left: ‘center‘,
                            top: ‘top‘,
                            textStyle: {
                                color: ‘#fff‘
                            }
                        },
                        legend: {        //图例组件
                            left: ‘left‘,
                            data: [‘强‘, ‘中‘, ‘弱‘],
                            textStyle: {
                                color: ‘#ccc‘
                            }
                        },
                        geo: {           //地理坐标系组件
                            name: ‘强‘,
                            type: ‘scatter‘,
                            map: ‘china‘,
                            label: {
                                emphasis: {
                                    show: false
                                }
                            },
                            itemStyle: {
                                normal: {
                                    areaColor: ‘#323c48‘,
                                    borderColor: ‘#111‘
                                },
                                emphasis: {
                                    areaColor: ‘#2a333d‘
                                }
                            }
                        },
                        series: [{              //系列列表
                            name: ‘弱‘,
                            type: ‘scatter‘,
                            coordinateSystem: ‘geo‘,
                            symbolSize: 1,
                            large: true,
                            itemStyle: {
                                normal: {
                                    shadowBlur: 2,
                                    shadowColor: ‘rgba(37, 140, 249, 0.8)‘,
                                    color: ‘rgba(37, 140, 249, 0.8)‘
                                }
                            },
                            data: Data(0)
                        }, {
                            name: ‘中‘,
                            type: ‘scatter‘,
                            coordinateSystem: ‘geo‘,
                            symbolSize: 1,
                            large: true,
                            itemStyle: {
                                normal: {
                                    shadowBlur: 2,
                                    shadowColor: ‘rgba(14, 241, 242, 0.8)‘,
                                    color: ‘rgba(14, 241, 242, 0.8)‘
                                }
                            },
                            data: Data(1)
                        }, {
                            name: ‘强‘,
                            type: ‘scatter‘,
                            coordinateSystem: ‘geo‘,
                            symbolSize: 1,
                            large: true,
                            itemStyle: {
                                normal: {
                                    shadowBlur: 2,
                                    shadowColor: ‘rgba(255, 255, 255, 0.8)‘,
                                    color: ‘rgba(255, 255, 255, 0.8)‘
                                }
                            },
                            data: Data(2)
                        }]
                    });
                });
       
</script>
   
</body>
</html>

具体参数含义可以参考官方给出的文档:

http://echarts.baidu.com/option.html#title

最终实现效果如图所示:

时间: 2024-11-03 03:26:06

百度ECharts初探的相关文章

使用百度echarts画图表的步骤

1.百度echarts是一个很好用的图表工具,可以将一些数据很形象直观的展示出来,下面看一下简单的使用. 2.首先引用echarts.js 具体文档可以参考官网: http://echarts.baidu.com/tutorial.html 里面讲的很详细.而且官网也有很多的实例供我们参考. 3.引入echarts之后需要一个容器: 1)准备容器 这个容器就是将我们的数据在里面展示出来. 2)初始化echarts实例: var myCharts =  echarts.init(document.

百度ECharts数据绑定诀窍

百度Echarts的功能还是蛮好用的.. 不能说多好但是也不次.. 下边就分享一些数据绑定经验..对在处理过程中的思路有一些帮助... 报表里用的最多的可以说是 饼状图和柱形图.. 饼状图里当然是包括环形图..还有所谓的玫瑰饼图... 柱形图里包括了曲线图..条状图等..只是展现形式不一样而已.. 那么有没有可能这些报表都在后台统一查询统计..同样格式的数据输出到前台..自由根据类别显示数据呢.. 我们说数据查询之后的结果.. -------------分割线--------------- 时间

在百度echarts中添加标识线markLine

在百度echarts中添加标识线,打开以下网址复制代码到输入框,绘制一条直线. http://echarts.baidu.com/echarts2/doc/example/line3.html option = { title : { text: '某楼盘销售情况', subtext: '纯属虚构' }, tooltip : { trigger: 'axis' }, legend: { data:['意向','预购','成交'] }, toolbox: { show : true, featur

百度echarts使用--y轴label数字太长难以全部显示

问题: 今天遇到个小问题,我们系统前端呈现使用了百度echarts.在绘制折线图的时候,因为数字过大,导致显示出现了问题. 解决方案: 左边y轴的值默认是根据我们填充进去的值来默认分割的,因为原始值就很大,所以导致显示不下,那么只要我们将显示的值按比例缩小,应该就可以了. 原始值很大: var map = data.map; for (var key in map){ var stockCode = key; option.legend.data.push(stockCode); var ind

百度echarts后台交互实例

先看效果图,点击小图标可以切换柱状图和折线图. 首先要做的就是下载百度echarts的包,我下载的是echarts-2.2.7,懒得找的童鞋,可以从这里下载:http://download.csdn.net/detail/sunping177/9721547 找到build下的dist文件夹,复制里面所有文件到项目中,如下图 下面我们看一下代码 先看前台页面 AnalysisSP.aspx AjaxEcharts.js是写好的echarts于后台交互的代码 <div style="heig

百度echarts自定义主题使用

1.百度echarts官网主题构建,自定义主题 主题在线构建  http://echarts.baidu.com/theme-builder/ 构建完成后下载并保存js文件 2.html导入保存的js文件 <!-- 引入 ECharts 文件 --> <script src="echarts.js"></script> <!-- 引入 自定义主题customed --> <script src="customed.js&q

C#+JQuery+.Ashx+百度Echarts 实现全国省市地图和饼状图动态数据图形报表的统计

在目前的一个项目中,需要用到报表表现数据,这些数据有多个维度,需要同时表现出来,同时可能会有大量数据呈现的需求,经过几轮挑选,最终选择了百度的echarts作为报表基础类库.echarts功能强大,界面优美.由于客户是淘宝卖家,因此想要实现每个月全国各个省份各自购力如何,大家可以统计其他的,如果GDP 人口 等等. 百度echarts简介请参考 http://echarts.coding.io/doc/example.html 效果图如下:全部是动态数据 JS代码: <!-- Charts La

关于百度echarts使用

前段时间研究了一下百度 echarts 做了个网络质量的实时图.有兴趣同学可以相互交流学习一下. 基本思路是: 前端数据使用echarts展示, 数据采集是用python获取并存入MYSQL ,然后用django把前端和数据连接起来.废话不多讲了,直接先上个图.

百度ECharts标题文字后面显示百分比

今天在用百度ECharts做饼状图的时候,客户提出一个要求,要在标题文字后面加百分比. 如图,现在是鼠标移上去才显示有百分比.红框部分没有百分比.于是查看ECharts文档,加入以下参数,成功让红框部分显示出百分比.