写在前面


上一小节,我们总结了折线(面积)图、柱状(条形)图、饼(圆环)图类型的图表。

但是,都是静态的。接下来的,这一小节,总结的是Echarts 动态数据的交换。

前置条件


开发环境:win10 家庭版

开发工具:Visual Studio 2019

数据库:MySQL

数据连接工具:Navicat Premium

使用技术:.Net Mvc+Dapper

创建数据库


//创建 sys_visitoronhour
DROP TABLE IF EXISTS `sys_visitoronhour`;
CREATE TABLE `sys_visitoronhour` (`Id` int(11) NOT NULL AUTO_INCREMENT,`Houer_name` int(11) DEFAULT NULL COMMENT '小时',`Hour_time` int(11) DEFAULT NULL COMMENT '次数',PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8;//插入数据
INSERT INTO `sys_visitoronhour` VALUES ('1', '1', '111');
INSERT INTO `sys_visitoronhour` VALUES ('2', '2', '223');
INSERT INTO `sys_visitoronhour` VALUES ('3', '3', '456');
INSERT INTO `sys_visitoronhour` VALUES ('4', '4', '432');
INSERT INTO `sys_visitoronhour` VALUES ('5', '5', '412');
INSERT INTO `sys_visitoronhour` VALUES ('6', '6', '321');
INSERT INTO `sys_visitoronhour` VALUES ('7', '7', '342');
INSERT INTO `sys_visitoronhour` VALUES ('8', '8', '341');
INSERT INTO `sys_visitoronhour` VALUES ('9', '9', '324');
INSERT INTO `sys_visitoronhour` VALUES ('10', '10', '456');
INSERT INTO `sys_visitoronhour` VALUES ('11', '11', '654');
INSERT INTO `sys_visitoronhour` VALUES ('12', '12', '546');
INSERT INTO `sys_visitoronhour` VALUES ('13', '13', '654');
INSERT INTO `sys_visitoronhour` VALUES ('14', '14', '765');
INSERT INTO `sys_visitoronhour` VALUES ('15', '15', '657');
INSERT INTO `sys_visitoronhour` VALUES ('16', '16', '667');
INSERT INTO `sys_visitoronhour` VALUES ('17', '17', '789');
INSERT INTO `sys_visitoronhour` VALUES ('18', '18', '987');
INSERT INTO `sys_visitoronhour` VALUES ('19', '19', '897');
INSERT INTO `sys_visitoronhour` VALUES ('20', '20', '888');
INSERT INTO `sys_visitoronhour` VALUES ('21', '21', '988');
INSERT INTO `sys_visitoronhour` VALUES ('22', '22', '768');
INSERT INTO `sys_visitoronhour` VALUES ('23', '23', '399');//创建 sys_visitoronprovince
DROP TABLE IF EXISTS `sys_visitoronprovince`;
CREATE TABLE `sys_visitoronprovince` (`Id` int(36) NOT NULL AUTO_INCREMENT COMMENT 'Id自增',`Visitors_Province_Name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '省份',`Visitors_Time` int(11) DEFAULT NULL COMMENT '访问次数',PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8;//插入数据INSERT INTO `sys_visitoronprovince` VALUES ('1', '北京', '223');
INSERT INTO `sys_visitoronprovince` VALUES ('5', '天津', '332');
INSERT INTO `sys_visitoronprovince` VALUES ('7', '上海', '442');
INSERT INTO `sys_visitoronprovince` VALUES ('11', '重庆', '442');
INSERT INTO `sys_visitoronprovince` VALUES ('14', '内蒙古自治区', '552');
INSERT INTO `sys_visitoronprovince` VALUES ('17', '新疆维吾尔自治区', '664');
INSERT INTO `sys_visitoronprovince` VALUES ('20', '西藏自治区', '223');
INSERT INTO `sys_visitoronprovince` VALUES ('24', '宁夏回族自治区', '556');
INSERT INTO `sys_visitoronprovince` VALUES ('26', '广西壮族自治区', '321');
INSERT INTO `sys_visitoronprovince` VALUES ('28', '黑龙江省', '432');
INSERT INTO `sys_visitoronprovince` VALUES ('29', '吉林省', '456');
INSERT INTO `sys_visitoronprovince` VALUES ('30', '辽宁省', '432');
INSERT INTO `sys_visitoronprovince` VALUES ('31', '河北省', '345');
INSERT INTO `sys_visitoronprovince` VALUES ('32', '山西省', '121');
INSERT INTO `sys_visitoronprovince` VALUES ('33', '青海省', '232');
INSERT INTO `sys_visitoronprovince` VALUES ('34', '山东省', '421');
INSERT INTO `sys_visitoronprovince` VALUES ('35', '河南省', '512');
INSERT INTO `sys_visitoronprovince` VALUES ('36', '江苏省', '123');
INSERT INTO `sys_visitoronprovince` VALUES ('37', '安徽省', '425');
INSERT INTO `sys_visitoronprovince` VALUES ('38', '浙江省', '321');
INSERT INTO `sys_visitoronprovince` VALUES ('39', '福建省', '232');
INSERT INTO `sys_visitoronprovince` VALUES ('40', '江西省', '211');
INSERT INTO `sys_visitoronprovince` VALUES ('41', '湖南省', '344');
INSERT INTO `sys_visitoronprovince` VALUES ('42', '湖北省', '151');
INSERT INTO `sys_visitoronprovince` VALUES ('43', '广东省', '242');
INSERT INTO `sys_visitoronprovince` VALUES ('44', '台湾省', '125');
INSERT INTO `sys_visitoronprovince` VALUES ('45', '海南省', '111');
INSERT INTO `sys_visitoronprovince` VALUES ('46', '甘肃省', '222');
INSERT INTO `sys_visitoronprovince` VALUES ('47', '陕西省', '333');
INSERT INTO `sys_visitoronprovince` VALUES ('48', '四川省', '444');
INSERT INTO `sys_visitoronprovince` VALUES ('49', '贵州省', '555');
INSERT INTO `sys_visitoronprovince` VALUES ('50', '云南省', '666');

创建项目


【1】.打开Visual Studio 2019 创建空的Mvc 项目


【2】.打开web.config 在节点下去除 BrowserLink

<add key="vs:EnableBrowserLink" value="false" />

【3】.在下 创建链接字符串

<connectionStrings><add name="mq" connectionString="server=localhost;uid=root;pwd=root;Database=mysqldemodb;Charset=utf8;Allow User Variables=True;"/></connectionStrings>

【4】.在项目中 创建lib文件夹 存放下载好的Echarts和其他的插件

【5】.在View文件夹中 创建Share文件夹

【6】.在Share文件夹中 创建**_LayoutIndex**布局页 引用Echarts、主题和其他插件脚本、样式

<!DOCTYPE html><html>
<head><meta name="viewport" content="width=device-width" /><title>@ViewBag.Title</title><link href="~/lib/layui/css/layui.css" rel="stylesheet" /><link href="~/lib/layer/theme/default/layer.css" rel="stylesheet" /><script src="~/lib/jquery/jquery-1.12.4.min.js"></script><script src="~/lib/layer/layer.js"></script><script src="~/lib/layui/layui.js"></script><script src="~/lib/echarts/echarts.min.js"></script><script src="~/lib/echarts/walden.js"></script><style>.layout {margin: 20px;padding-left: 15px;padding-right: 15px;margin-bottom: 70px;border: 1px solid #ddd;border-radius: 10px;}</style>
</head>
<body>@RenderBody()
</body>
</html>

【7】.在Controllers文件夹 创建IndexController 控制器

【8】.在IndexController控制器 创建Index视图 引用**_LayoutIndex**布局页

安装程序包


【1】安装 MySQL.Data 安装命令

PM> Install-Package MySql.Data

【2】安装 Dapper 安装命令

Install-Package Dapper

柱状图


【1】在Index视图中

@{ViewBag.Title = "Index";Layout = "~/Views/Share/_LayoutIndex.cshtml";
}
<div class="layui-fluid"><div class="layout"><fieldset class="layui-elem-field layui-field-title"><legend>动态图表</legend></fieldset><div class="layui-row"><div class="layui-col-md12"><div id="main" style="width: 100%;height:400px;"></div></div></div></div>
</div>

【2】脚本

var myChart1 = echarts.init(document.getElementById('main'), 'walden');
myChart1.setOption({tooltip: { trigger: 'axis' },legend: { data: ['访问量'] },calculable: true,xAxis: [{type: 'category',data: [],axisLabel: {show: true,textStyle: { color: '#000' },rotate: 25,interval: 0,}}],yAxis: [{type: 'value'}],series: [{name: '访问量',type: 'bar',data: [],markPoint: {data: [{ type: 'max', name: '最大值' },{ type: 'min', name: '最小值' }]},markLine: {data: [{ type: 'average', name: '平均值' }]}},]
});
Get_load();
//text: 文本内容
//maskColor: 背景色
//textColor:文本颜色
myChart1.showLoading('default', { text: '统计中,请稍候...', maskColor: '#404a59', textColor: '#fff', });
function Get_load() {var xvalue = [];var yvalue = [];$.ajax({url: "../Index/Area_Times",type: "Get",async: false,}).done(function (msg) {if ($.isEmptyObject(msg) == false) {$.each(msg, function (i, obj) {xvalue.push(obj.Visitors_Province_Name);yvalue.push(obj.Visitors_Time);});myChart1.setOption({xAxis: [{ data: xvalue }],series: [{ data: yvalue }]});setTimeout(function () { myChart1.hideLoading(); }, 1000);}}).fail(function (error) { });}

【3】在IndexController 控制器中

 #region 地区访问次数
public JsonResult Area_Times() {using (var mqconns = new MySqlConnection(mqcon)) {string sql = "select * from v_Visitor_Area";var result = mqconns.Query<sys_visitorOnProvince>(sql);return Json(result,JsonRequestBehavior.AllowGet);}
}
#endregion

效果:

图表的详细


有时候我们需要通过点击图表的某一列,想查询选择的这一列的详细数据。

以下,我们来讲一下,如何可以通过选中某一列跳转到对应的数据。

我们就以柱状图为列子~


【1】首先,我们需要在IndexController控制器中 创建Detial方法 获取前台传过来的值

 public ActionResult Detial(string Id) {ViewBag.Id = Id;return View();
}

【2】其次,我们需要在IndexController控制器中 创建AreaByname_Times方法 用于接收值

     public JsonResult AreaByname_Times() {using (var mqconns = new MySqlConnection(mqcon)) {string paraname = Request["paraname"];string sql = "select * from sys_visitoronprovince where 1=1";if (paraname == "华东地区"){sql += " and (Visitors_Province_Name LIKE '%山东%' OR ";sql += " Visitors_Province_Name LIKE '%江苏%' OR";sql += " Visitors_Province_Name LIKE '%上海%' OR";sql += " Visitors_Province_Name LIKE '%浙江%' OR";sql += " Visitors_Province_Name LIKE '%安徽%' OR";sql += " Visitors_Province_Name LIKE '%福建%' OR";sql += " Visitors_Province_Name LIKE '%江西%')";}else if (paraname == "华南地区") {sql += " and (Visitors_Province_Name LIKE '%广东%' OR";sql += " Visitors_Province_Name LIKE '%广西%' OR";sql += " Visitors_Province_Name LIKE '%海南%')";}else if (paraname == "华中地区"){sql += " and (Visitors_Province_Name LIKE '%河南%' OR";sql += " Visitors_Province_Name LIKE '%湖南%' OR";sql += " Visitors_Province_Name LIKE '%湖北%')";}else if (paraname == "华北地区"){sql += " and (Visitors_Province_Name LIKE '%北京%' OR";sql += " Visitors_Province_Name LIKE '%天津%' OR";sql += " Visitors_Province_Name LIKE '%河北%' OR";sql += " Visitors_Province_Name LIKE '%山西%' OR ";sql += " Visitors_Province_Name LIKE '%内蒙古%')";}else if (paraname == "西北地区"){sql += " and (Visitors_Province_Name LIKE '%宁夏%' OR";sql += " Visitors_Province_Name LIKE '%青海%' OR";sql += " Visitors_Province_Name LIKE '%陕西%' OR";sql += " Visitors_Province_Name LIKE '%甘肃%' OR ";sql += " Visitors_Province_Name LIKE '%新疆%')";}else if (paraname == "西南地区"){sql += " and (Visitors_Province_Name LIKE '%四川%' OR";sql += " Visitors_Province_Name LIKE '%贵州%' OR";sql += " Visitors_Province_Name LIKE '%云南%' OR";sql += " Visitors_Province_Name LIKE '%重庆%' OR ";sql += " Visitors_Province_Name LIKE '%西藏%')";}else if (paraname == "东北地区"){sql += " and (Visitors_Province_Name LIKE '%辽宁%' OR";sql += " Visitors_Province_Name LIKE '%吉林%' OR";sql += " Visitors_Province_Name LIKE '%黑龙江%')";}var result = mqconns.Query<sys_visitorOnProvince>(sql);return Json(result,JsonRequestBehavior.AllowGet);}}

【3】在Detail 视图

@{ViewBag.Title = "Detial";Layout = "~/Views/Share/_LayoutIndex.cshtml";
}
<div class="layui-fluid"><div class="layout"><table class="layui-table " lay-skin="line" id="tb"><thead><tr><th>序号</th><th>地区名称</th><th>访问次数</th></tr></thead></table></div>
</div>

【4】创建脚本

<script type="text/javascript">$(function () {var id = '@ViewBag.id';$.get("../Index/AreaByname_Times?paraname=" + id, function (msg) {if ($.isEmptyObject(msg) == false) {var str_tb = "";$("#tb tr:gt(0)").remove();$.each(msg, function (i, obj) {str_tb += "<tr>";str_tb += "<td>" + (i + 1) + "</td>";str_tb += "<td>" + obj.Visitors_Province_Name + "</td>";str_tb += "<td>" + obj.Visitors_Time + "</td>";str_tb += "</tr>";});$(str_tb).appendTo("#tb");}});});
</script>

效果:

曲线图


【1】在Index 视图中

@{ViewBag.Title = "Index";Layout = "~/Views/Share/_LayoutIndex.cshtml";
}
<div class="layui-fluid"><div class="layout"><fieldset class="layui-elem-field layui-field-title"><legend>动态图表</legend></fieldset><div class="layui-row"><div class="layui-col-md12"><div id="main1" style="width: 100%;height:400px;"></div></div></div></div>
</div>

【2】脚本

 var myChart = echarts.init(document.getElementById('main'), 'walden');myChart.setOption({tooltip: { trigger: 'axis' },legend: { data: ['每天访问量'] },calculable: true,xAxis: [{type: 'category',boundaryGap: false,data: []}],yAxis: [{type: 'value'}],series: [{name: '每天访问量',type: 'line',stack: '访问次数',data: []},]});Get_load();//text: 文本内容//maskColor: 背景色//textColor:文本颜色myChart.showLoading('default', { text: '统计中,请稍候...', maskColor: '#404a59', textColor: '#fff', });function Get_load() {var xvalue = [];var yvalue = [];$.ajax({url: "../Index/SingleBar",type: "Get",async: false,}).done(function (msg) {if ($.isEmptyObject(msg) == false) {$.each(msg, function (i, obj) {xvalue.push(obj.Houer_name);yvalue.push(obj.Hour_time);});myChart.setOption({xAxis: [{ data: xvalue }],series: [{ data: yvalue }]});setTimeout(function () { myChart.hideLoading(); }, 1000);}}).fail(function (error) { });}}

【3】在IndexController控制器中

#region 获取24小时访问次数/// <summary>/// 获取24小时访问次数/// </summary>/// <returns></returns>public JsonResult SingleBar(){using (var mqconns = new MySqlConnection(mqcon)){string sql = "select * from sys_visitorOnHour ";var result = mqconns.Query<sys_visitorOnHour>(sql);return Json(result, JsonRequestBehavior.AllowGet);}}
#endregion

效果图:

饼图


【1】在Index 视图中

@{ViewBag.Title = "Index";Layout = "~/Views/Share/_LayoutIndex.cshtml";
}
<div class="layui-fluid"><div class="layout"><fieldset class="layui-elem-field layui-field-title"><legend>动态图表</legend></fieldset><div class="layui-row"><div class="layui-col-md12"><div id="main1" style="width: 100%;height:400px;"></div></div></div></div>
</div>

【2】脚本

        var myChart2 = echarts.init(document.getElementById('main2'), 'walden');myChart2.setOption({title: {text: '民族自治区访问量',x: 'center'},tooltip: {trigger: 'item',formatter: "{b} : {c} ({d}%)"},legend: {orient: 'vertical',x: 'left',data: []},calculable: true,series: [{name: '访问来源',type: 'pie',radius: '55%',center: ['50%', '60%'],data: []}]});Get_load();//text: 文本内容//maskColor: 背景色//textColor:文本颜色myChart1.showLoading('default', { text: '统计中,请稍候...', maskColor: '#404a59', textColor: '#fff', });function Get_load() {var xvalue = [];var yvalue = [];$.ajax({url: "../Index/Native_Times",type: "Get",async: false,}).done(function (msg) {if ($.isEmptyObject(msg) == false) {$.each(msg, function (i, obj) {xvalue.push(obj.Visitors_Province_Name);yvalue.push({ value: obj.Visitors_Time, name: '' + obj.Visitors_Province_Name + '' });});myChart2.setOption({legend: { data: xvalue },series: [{ data: yvalue }]});setTimeout(function () { myChart2.hideLoading(); }, 1000);}}).fail(function (error) { });}

【3】在IndexController控制器中

#region 自治区访问量
public JsonResult Native_Times() {using (var mqconns =new MySqlConnection(mqcon)) {string sql = "select * from sys_visitoronprovince ";sql += "where (Visitors_Province_Name='内蒙古自治区' ";sql += "or Visitors_Province_Name='广西壮族自治区'";sql += "or Visitors_Province_Name='宁夏回族自治区'";sql += "or Visitors_Province_Name='新疆维吾尔自治区' ";sql += "or Visitors_Province_Name='西藏自治区') ORDER BY Visitors_Time desc";var result = mqconns.Query<sys_visitorOnProvince>(sql);return Json(result,JsonRequestBehavior.AllowGet);}
}
#endregion

效果:

转载于:https://www.cnblogs.com/ZengJiaLin/p/11356966.html

Echarts 学习系列(3)-Echarts动态数据交互相关推荐

  1. echarts 饼图移动端_echarts饼图--数据交互

    /*饼图 鼠标经过时模块放大功能 */ // 路径配置 require.config({ paths: { echarts: 'js/' } }); // 使用 require( [ 'echarts ...

  2. Echarts学习之路 —— echarts介绍

    最近接触到了Echarts这个JavaScript图表库,感觉已经被它的多种多样的绚丽图形深深地吸引了,所以我决定去学习它,了解它. 今天先来对它进行一些初步的了解. ECharts介绍: 官方解释: ...

  3. echarts vue图表加载动态数据 vue 数据加载完了,数据没有显示问题

    记录一下遇到的问题: 使用echarts +vue 的时候.遇到后台请求的数据 没有别获取拿到. 原因是图表先已经被加载了,vue里 data 默认初始化的数据是[]的,这个时候,后台请求方法还没有将 ...

  4. ECharts学习总结(五):echarts的Option概览

    注:下面内容摘自echarts官网,原文地址:http://echarts.baidu.com/doc/doc.html#%E9%80%89%E9%A1%B9 option 图表选项,包含图表实例任何 ...

  5. ECharts概念学习系列之ECharts是什么?

    不多说,直接上干货! http://echarts.baidu.com/index.html http://echarts.baidu.com/echarts2/index.html 开源的EChar ...

  6. Caffe学习系列(14):初识数据可视化

    转载自:http://www.cnblogs.com/denny402/p/5092075.html#top 首先将caffe的根目录作为当前目录,然后加载caffe程序自带的小猫图片,并显示. 图片 ...

  7. Android音视频学习系列(五) — 掌握音频基础知识并使用AudioTrack、OpenSL ES渲染PCM数据

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

  8. Android音视频学习系列(六) — 掌握视频基础知识并使用OpenGL ES 2.0渲染YUV数据

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

  9. Android音视频学习系列(七) — 从0~1开发一款Android端播放器(支持多协议网络拉流本地文件)

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

最新文章

  1. python之if和while控制流
  2. 好用的 Markdown 编辑器 Typora【Window 、Linux 下的安装教程】
  3. java日志框架log4j详细配置及与slf4j联合使用教程
  4. apt-get 获取源码的方法
  5. magento 获取 pages/Static Block 内容 Get Pages/Static Block in Magento
  6. sklearn一般流程
  7. Voxengo音频插件合集:Voxengo Total Bundle for Mac
  8. 十四步实现拥有强大AI的五子棋游戏
  9. 睿智的目标检测7——yolo3详解及其预测代码复现
  10. SAP月结在制品结算时不产生凭证的一个问题
  11. 分页封装实用工具类及其使用方法
  12. 软件测评概要总结-中科软测认证中心
  13. 用Matlab进行时域信号的频谱分析
  14. CentOS7 服务器分析挖矿病毒,清理挖矿病毒 tor2web
  15. Linux 下 vi/vim 文本编辑器超详细使用指南(转载)
  16. 【Fortran_Study_Introduction】Fortran全面学习指南
  17. OpenAI掌门人Sam Altman:DALL·E 2 教会我的三件事!
  18. 秋秋发生大规模账号泄露?二十行代码一键采集
  19. 6.嵌入式控制器EC学习 嵌入式控制器EC中的PS/2触摸板的通信过程
  20. cd无法启动计算机,最佳解决方案:Lenovo计算机CD-ROM驱动器,硬盘和U盘无法启动的问题的可能原因和解决方法...

热门文章

  1. 小米基于OpenStack搭建私有云平台技术架构大揭秘!
  2. 启动docker时映射到宿主机时出现 /usr/bin/docker-current: Error response from daemon: driver failed……的解决方案
  3. 如何实现 AppStore App 的自动下载
  4. Universal Link|iOS开发者不得不知的技术
  5. 【ChatGPT】多国“围堵”,万人抵制,AI发展的红线到底在哪?
  6. 《重构-改善既有代码的设计》第三章(上)
  7. UVM-- Sequencer和driver
  8. D3D11_Chili_Tutorial(2):画一个三角形
  9. opencv-车辆牌照识别(一)
  10. Flex 学习笔记之一:Flex 简介