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

*  作者:杨浩瑞  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. 【模板】【P3605】【USACO17JAN】Promotion Counting 晋升者计数——动态开点和线段树合并(树状数组/主席树)

    (题面来自Luogu) 题目描述 奶牛们又一次试图创建一家创业公司,还是没有从过去的经验中吸取教训--牛是可怕的管理者! 为了方便,把奶牛从 1⋯N(1≤N≤100,000) 编号,把公司组织成一棵树 ...

  2. 2018年第九届蓝桥杯【C++省赛B组】B、C、D、F、G 题解

    B. 明码 #STL 题意 把每个字节转为2进制表示,1表示墨迹,0表示底色.每行2个字节,一共16行,布局是: 第1字节,第2字节 第3字节,第4字节 .... 第31字节, 第32字节 给定一段由 ...

  3. apply 、call 以及 bind 的使用和区别

    一.被apply和call调用的函数中没有传递参数 (一)不传参数 结果: (二)传递 null 结果: 总结: 1.当使用 apply和 call去调用函数并且没有传递参数时,前提这个函数中也没有传 ...

  4. 课时四:Action操作

    参考文档 瑞泰信息技术有限公司 微软MVP(15-18)罗勇 语义说明 核心名词 ​ FetchXML:是基于Xml的查询语言,可以把它简单理解成SQL语句,通过它可以查询Dynamics 365 C ...

  5. 04-Python里字符串的常用操作方法三-判断

    1. startswith(): 判断字符串是否以某个子串开始,是则返回True,否则返回False 示例: my_str = 'hello world and my and test and pyt ...

  6. MongoTemplate 移除 _class 字段

    @Configuration public class ApplicationReadyListener implements ApplicationListener<ContextRefres ...

  7. 2017 Mid Central Regional F.Orderly Class(大水题)

    这两天刷了两道过去的原题,看看思维还是8太行. 这道题问给出两个字符串,要求只翻转一次,问有几种不同的方法使得a串变成b串 我一开始没看到只翻转一次,还以为是个计数 + 字符串dp大难题,心想当年的学 ...

  8. 部署 Prometheus 和 Grafana 到 k8s

    在 k8s 中部署 Prometheus 和 Grafana Intro 上次我们主要分享了 asp.net core 集成 prometheus,以及简单的 prometheus 使用,在实际在 k ...

  9. PyQt(Python+Qt)学习随笔:QTabWidget选项卡部件操作控制类属性movable和tabsClosable介绍

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTabWidget的操作控制类属性包括movable.tabsClosable这两个. 1. mo ...

  10. THE BUG 队第一次团队作业

    1.队名: THE BUG 队 2.队员学号: 杨梓琦 3118005115(队长) 温海源,3118005109 陈杰才,3118005089 李华,3118005097 钟明康,311800512 ...