/** 转载请保留博客园原地址以及版权声明,请勿恶意修改,本博客中的内容均属于技术交流,请勿用于商业用途,谢谢配合

*  作者:杨浩瑞  QQ:1420213383  独立博客:http://www.yxxrui.cn

* 【后台】http://xiaoshuo.qqsiot.cn/manager 【前台】http://y6.qqsiot.cn

*  管理员账号:admin  渠道商账号:channel  代理商账号:agent  演示密码:123456

**/

使用百度echarts插件来制作地图分布统计图,更加方便分析和理解用户行为,对症下药才能起到最好的疗效,哈哈哈,效果怎么样,看看就知道了
先展示出来一个地图,上边显示所有省份的全部情况,然后点击某个省份的时候,使用post请求后台,获取对应省份的城市分别的人数,然后生成城市分布柱状图,后台程序比较简单,就是获取城市和人数,不得不说echarts是一个非常好用的工具,我记得15年大四的时候在一家公司实训,做过一个类似的统计,当时有一些朋友在使用flash来写,后来接触了echats之后,感觉flash就是个垃圾,为百度顶一个,具体效果也可以到演示站中看,下期讲一下条形统计图
<script src="/Content/Share/js/echarts-all.js"></script>
<script src="/Content/Share/novel.js"></script>
<div id="content-header">
<div id="breadcrumb">
<a href="#" title="Go to Home" class="tip-bottom">
<i class="icon-home"></i> Home
</a>
<a href="#" class="current">用户分布</a>
</div>
</div>
<div class="container-fluid data-stat">
<div class="row-fluid">
<a href="/Manager/AgentDatas/Index" class="btn">订单统计</a><!--
--><a href="/Manager/AgentDatas/User" class="btn">用户统计</a><!--
--><a href="/Manager/AgentDatas/Novel" class="btn">小说统计</a><!--
--><a href="/Manager/DataCharts/OrderDatas" class="btn">订单趋势</a><!--
--><a href="/Manager/DataCharts/UserDatas" class="btn">用户趋势</a><!--
--><a href="/Manager/DataCharts/UserAreaDatas" class="btn btn-primary">用户分布</a>
</div>
</div>
<br />
<div id="userMap" style="height: 400px; width: 94%;"></div>
<div id="two" style="height:400px; width:94%;"></div>
<script type="text/javascript">
var acid = '@ViewBag.acid';
// 基于准备好的dom,初始化echarts实例
var userMapChart = echarts.init(document.getElementById('userMap'));
var myChart2 = echarts.init(document.getElementById('two'));
userMapChart.showLoading({
text: '正在努力的读取数据中...' //loading话术
});
userMapChart.on('click', function (param) {
dealCityPost(param.name);
});
function dealCityPost(name) {
$.post('/Manager/DataCharts/UserCityMapJson', { acid: acid, name: name }, function (d) {
//console.log(JSON.stringify(d));
if (d.code == 0) {
dealChart2(name, d.data);
}
});
}
$.post('/Manager/DataCharts/UserProvinceMapJson', { acid: acid }, function(d) {
//console.log(JSON.stringify(d));
if (d.code == 0) {
dealChart(d.data);
//默认显示浙江省
dealCityPost('浙江');
}
});
var provinces = [
'北京',
'天津',
'上海',
'重庆',
'河北',
'河南',
'云南',
'辽宁',
'黑龙江',
'湖南',
'安徽',
'山东',
'新疆',
'江苏',
'浙江',
'江西',
'湖北',
'广西',
'甘肃',
'山西',
'内蒙古',
'陕西',
'吉林',
'福建',
'贵州',
'广东',
'青海',
'西藏',
'四川',
'宁夏',
'海南',
'台湾',
'香港',
'澳门'
];
function getMaxValue(data) {
var max = 0;
for (var i in data) {
if (data[i].value > max && $.inArray(data[i].name, provinces) != -1) {
max = data[i].value;
}
}
return max;
}
function dealChart(datas) {
userMapChart.hideLoading();
var option = {
title: {
text: '用户省份分布统计',
subtext: '',
x: 'center'
},
tooltip: {
trigger: 'item'
},
dataRange: {
min: 0,
max: getMaxValue(datas),
x: 'right',
y: 'bottom',
text: ['高', '低'], // 文本,默认为数值文本
calculable: true,
color: ['#BD0707','#FFD2D2']
},
series: [
{
name: '中国',
type: 'map',
mapType: 'china',
roam: false,
itemStyle: {
normal: { label: { show: true } },
emphasis: { label: { show: true } }
},
data: datas
}
]
};
userMapChart.setOption(option);
}
function dealChart2(name, datas) {
var citys = [];
var nums = [];
for (var i in datas) {
var data = datas[i];
citys[i] = data.name;
nums[i] = data.value;
}
myChart2.showLoading({
text: '正在努力的读取数据中...', //loading话术
});
myChart2.hideLoading();
var option2 = {
title: {
text: name+'省各城市用户人数',
x: 'center'
},
legend: { // 图例配置
padding: 5, // 图例内边距,单位px,默认上下左右内边距为5
itemGap: 10, // Legend各个item之间的间隔,横向布局时为水平间隔,纵向布局时为纵向间隔
data: [name+'省'],
x: 'center',
y: 'bottom'
},
tooltip: { // 气泡提示配置
trigger: 'item', // 触发类型,默认数据触发,可选为:'axis'
},
xAxis: [ // 直角坐标系中横轴数组
{
type: 'category', // 坐标轴类型,横轴默认为类目轴,数值轴则参考yAxis说明
data: citys
}
],
yAxis: [ // 直角坐标系中纵轴数组
{
type: 'value', // 坐标轴类型,纵轴默认为数值轴,类目轴则参考xAxis说明
boundaryGap: [0.1, 0.1], // 坐标轴两端空白策略,数组内数值代表百分比
splitNumber: 6 // 数值轴用,分割段数,默认为5
}
],
series: [
{
name: name+'省', // 系列名称
type: 'bar', // 图表类型,折线图line、散点图scatter、柱状图bar、饼图pie、雷达图radar
itemStyle: {
normal: { label: { show: true } }
},
data: nums
}
]
};
myChart2.clear();
myChart2.setOption(option2);
}
$(function () {
$('#userMapMenu').addClass("active");
$('#dataMenu > a').trigger('click');
});
</script>

微信小说分销系统设计之使用百度Echarts地图统计功能统计微信粉丝地域分布情况的更多相关文章

  1. 类似818tu.co微信小说分销系统设计之多公众号网页授权自动登录源码

    /** 转载请保留原地址以及版权声明,请勿恶意修改 *  作者:杨浩瑞  QQ:1420213383  独立博客:http://www.yxxrui.cn * [后台]http://xiaoshuo. ...

  2. 类似818tu.c微信小说分销系统设计之多公众号网页授权自动登录源码分享

    /** 转载请保留原地址以及版权声明,请勿恶意修改 *  作者:杨浩瑞  QQ:1420213383  独立博客:http://www.yxxrui.cn * [后台]http://xiaoshuo. ...

  3. 类818tu.c微信小说分销系统设计之定时模板消息源码

    近期将出个系列讲解开发过程,同时作为此系统的开发记录吧,万能的博客园,本边讲解如何发送模板消息,并且能够定时发送,下一篇讲解如何处理多个公众号的网页授权登录问题 [后台]http://xiaoshuo ...

  4. 百度echarts地图扩展动态加载geoCoord

    var data={}; for(var i=0;i<result.length;i++){ data[(""+result[i].name+"")]=e ...

  5. 工作中遇到的有关echarts地图和百度地图的问题

    工作中遇到的有关echarts地图和百度地图的问题 *** 前言:在做项目中需要制作一个场景是左边是柱状图,右边是地图,地图上悬浮一个按钮可以切换echarts地图和百度地图.*** 功能: 在点击左 ...

  6. echarts 地图 动态 展示 结合css+js

    echarts地图展示功能非常强大,官网上静态展示的样例非常多了,动态的资料少.研究了下.我眼下实现的通过ajax从server获取数据动态展示地图. 另外,我们有时候希望在地图之上做些自己定义的东西 ...

  7. WPF仿百度Echarts人口迁移图

    GitHub地址:https://github.com/ptddqr/wpf-echarts-map/tree/master 关于大名鼎鼎的百度Echarts我就不多说了 不了解的朋友直接看官方的例子 ...

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

    在目前的一个项目中,需要用到报表表现数据,这些数据有多个维度,需要同时表现出来,同时可能会有大量数据呈现的需求,经过几轮挑选,最终选择了百度的echarts作为报表基础类库.echarts功能强大,界 ...

  9. 完整版ajax+百度echarts实现统计图表demo并随着窗口大小改变而自适应

    1.前言 百度Echarts会常用到我们的项目中做统计,api很详细,demo也非常之多,我们常用的是应有尽有了,做一些小项目的时候,百度echarts的demo已足够用了.今天呢.主要是跟小白讲一下 ...

随机推荐

  1. flink:JobGraph生成过程分析

    1.JobGraph是由StreamGraph转换而来,当client将StreamGraph提交后,job启动前会先完成转换,统一的转换入口如下: 2.StreamingJobGraphGenera ...

  2. 【mq读书笔记】mq producer启动流程

    创建MQClientInstance实例.这里有个实例缓存 clienrId为客户端IP+instance+(unitname)注意到之前把instance替换为进程id,是为了instance为默认 ...

  3. dubbo ChannelHandler

    记得我们在做服务暴露的bind和服务调用的connect都有一个ExchangeHandler的实例作为入参: 这个handler最终会利用装饰者模式被封装若干层,Dubbo中提供了大量的Handle ...

  4. Memtest在CentOS下的使用方法。

    #memtest,指定测试大小范围248G,指定测试1次 nohup memtester 248G 1 > mem218.log&

  5. 01_Activity生命周期及传递数据

    1. Activity的生命周期: 2. Activity启动另一个Activity,并传递数据: package com.example.activitydemo; import android.a ...

  6. golang 自学系列(四)——debug for vscode

    golang 自学系列(四)--(调试)VSCode For Debug 这里如何装 vscode 我就不说了 这里如何在 vscode 正常写代码我也不说了 在能正常用 vscode 写 go 语言 ...

  7. od中低位地址和高位的顺序,以及数据的存放读写

    在观察内存的时候应当注意"内存数据"与"数值数据"的区别. 在我们的调试环境中,内存由低到高分布,你可以简单地把这种情形理解成Win32系统在内存中由地位向高位 ...

  8. 02day

    1.python注释(不执行) #:单行注释 ''' '''或者""" """:多行注释 2.python2中文解决方法 #coding=u ...

  9. PyQt(Python+Qt)学习随笔:QListWidget的访问当前项的currentItem和setCurrentItem方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 currentItem方法返回列表部件当前选择的项,setCurrentItem方法用于设置当前项. ...

  10. 第十四章 web前端开发小白学爬虫

    老猿从事IT开发快三十年了,接触互联网也很久了,但自己没有做过web前端开发,只知道与前端开发相关的一些基本概念,如B/S架构.html标签.js脚本.css样式.xml解析.cookies.http ...