前端小白在asp.net core mvc中使用ECharts

对于在浏览器中绘制图形图表,目前有较多的js类库可以使用,如:ChartJS,Flot,canvasjs等,但是今天介绍的主角为国产图表库,并在apache孵化,就是大名鼎鼎的echarts。

前方高能【官方介绍】

特性 - Apache ECharts (incubating)

ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。

丰富的可视化类型


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

除了已经内置的包含了丰富功能的图表,ECharts 还提供了自定义系列,只需要传入一个renderItem函数,就可以从数据映射到任何你想要的图形,更棒的是这些都还能和已有的交互组件结合使用而不需要操心其它事情。

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

多种数据格式无需转换直接使用


ECharts 内置的 dataset 属性(4.0+)支持直接传入包括二维表,key-value 等多种格式的数据源,通过简单的设置 encode 属性就可以完成从数据到图形的映射,这种方式更符合可视化的直觉,省去了大部分场景下数据转换的步骤,而且多个组件能够共享一份数据而不用克隆。

为了配合大数据量的展现,ECharts 还支持输入 TypedArray 格式的数据,TypedArray 在大数据量的存储中可以占用更少的内存,对 GC 友好等特性也可以大幅度提升可视化应用的性能。

实践


1、 使用VS2019创建一个asp.net core web项目

选择ASP.NET Core Web 应用程序,并使用Web应用程序(模型视图控制器)模板

2、使用libman添加echarts库


在解决方案资源管理器中选择项目名称->wwwroot->lib,在lib文件夹上右击,选择:添加->客户端库,弹出窗口输入echarts,自动带出最新的版本,由于使用了cdnjs,上面最新版为4.3.0,在其他的如:jsdelivr、unpkg上面最新版为4.5.0。不过使用jsdelivr、unpkg现在4.5.0版本失败,所以选择了cdnjs上面的4.3.0版本。

> 插曲:在弹出的客户端库输入内容时,如果时中文输入法,已输入部分文字,切换为英文输入法时,会导致vs2019重启,所以在客户端库窗口输入内容时一定要前切换到英文输入法

3、添加一个action,名为Echarts,并添加相应的视图

在视图中添加如下代码,idmychart的div用于放置echarts图表

    <div class="row">        <div class="col-md-12">            <div id="myechart" style="width: 100%; height: 500px;">
</div> </div>    </div>

添加相关js的引用

<script src="~/lib/jquery/dist/jquery.js"></script><script src="~/lib/echarts/echarts.js"></script>

4、使用Echarts


准备的json数据存放到了github上面:

https://github.com/mzy666888/datajson

本文中将data.json放在wwwroot目录下面了。


在引用的的js库的下方编写js代码使用echarts显示图表。
首先定义了一个结构,用于存放数据。

function Series(type, xdata, seriesData) {        this.typeName = type;//相当于title        this.xdata = xdata;//X轴数据        this.seriesData = seriesData;//Y轴数据    }

声明一个charts实例。

> echartInstance.clear:清空当前实例,会移除实例中所有的组件和图表。清空后调用 getOption 方法返回一个{}空对象。在多次查询时需要用到清除上次添加的内容

var myEChart = echarts.init(document.getElementById('myechart'));myEChart.clear();//用于清除已存在的内容

定义option

var options = {        title: {            text: '数据曲线:',            x: 'center'        },                legend: {            data: [],            x: 'left'        },                xAxis: {            type: 'category'//必须        },        yAxis: {            type: 'value',            max: 90,            min: -10        },        series: []    }

设置myEChart的option

myEChart.setOption(options);

获取json数据显示

    $.get('/data.json').done(function (data) {
//var aa = JSON.parse(data); var x = []; $.each(data.List, function (n, value) { var xd = [], sd = []; $.each(value.Data, function (m, mValue) { xd.push(mValue.SaveTime); sd.push(mValue.WorkStationData); }); var s = new Series(value.TypeTitleName, xd, sd); x.push(s); });
var xStart = data.Start; var xEnd = data.End; options.xAxis.data = x[0].xdata; options.xAxis.start = xStart; options.xAxis.end = xEnd;
$.each(x, function (i, value) { options.title.text += value.typeName + " "; options.legend.data.push(value.typeName); options.series.push({ name: value.typeName, type: 'line', smooth: true, data: value.seriesData }); }); myEChart.setOption(options);
});

说明1

此段代码是将json数据处理后,将x,y轴的数据分开存到到数组x中

        var x = [];        $.each(data.List,            function (n, value) {                var xd = [], sd = [];                $.each(value.Data,                    function (m, mValue) {                        xd.push(mValue.SaveTime);                        sd.push(mValue.WorkStationData);                    });                var s = new Series(value.TypeTitleName, xd, sd);                x.push(s);            });

说明2

对option的xAxis轴的内容进行处理

var xStart = data.Start;var xEnd = data.End;options.xAxis.data = x[0].xdata;options.xAxis.start = xStart;options.xAxis.end = xEnd;

说明3

对option的titlelegendseries轴的内容进行处理
        $.each(x,            function (i, value) {                options.title.text += value.typeName + " ";                options.legend.data.push(value.typeName);                options.series.push({                    name: value.typeName,                    type: 'line',                    smooth: true,                    data: value.seriesData                });            });

说明4

设置myEChart的option
myEChart.setOption(options);

5、运行程序


点击“CTRL+F5”运行程序,切换到相应的action,可以看到图表显示如下内容,所有的数据都正确的显示了。

到目前为止,贴出上面完整的代码,到目前为止,你已经可以使用echarts处理图表问题了:

<script type="text/javascript">    //定义类    function Series(type, xdata, seriesData) {        this.typeName = type;        this.xdata = xdata;        this.seriesData = seriesData;    }
var myEChart = echarts.init(document.getElementById('myechart')); myEChart.clear(); var options = { title: { text: '数据曲线:', x: 'center' }, legend: { data: [], x: 'left' }, xAxis: { type: 'category' }, yAxis: { type: 'value', max: 90, min: -10 }, series: [] }
myEChart.setOption(options); $.get('/data.json').done(function (data) {
//var aa = JSON.parse(data); var x = []; $.each(data.List, function (n, value) { var xd = [], sd = []; $.each(value.Data, function (m, mValue) { xd.push(mValue.SaveTime); sd.push(mValue.WorkStationData); }); var s = new Series(value.TypeTitleName, xd, sd); x.push(s); });
var xStart = data.Start; var xEnd = data.End; options.xAxis.data = x[0].xdata; options.xAxis.start = xStart; options.xAxis.end = xEnd;
$.each(x, function (i, value) { options.title.text += value.typeName + " "; options.legend.data.push(value.typeName); options.series.push({ name: value.typeName, type: 'line', smooth: true, data: value.seriesData }); }); myEChart.setOption(options);
});</script>

6、功能扩展


6.1 图表左右空白较多

为了解决图表中左右空白较多的问题,可以在options中添加如下内容:

        grid: {            show: true,            borderColor: '#19507c',            x: 50,            x2: 50,            y: 40        },

6.2 鼠标滑过提示

上面的截图,我们使用数据划过图表时,不能现在当前时间上各项数据,在options中添加如下代码可以实现鼠标滑过显示各项数据的功能。

        tooltip: {            trigger: 'axis',            axisPointer: {                type: 'cross',                animation: false,                label: {                    backgroundColor: '#505765'                }            }        },

6.3 添加相关功能按钮

使用如下设置,添加了3个按钮,分别为:区域缩放,区域缩放还原和还原。
区域缩放:可以在图标上按住鼠标左键,用鼠标滑定一段区域,显示滑定区域的数据,相当于区域放大
区域缩放还原:还原到初始状态
还原:就是还原功能

        toolbox: {            feature: {                dataZoom: {                    yAxisIndex: 'none'                },                restore: {},                saveasImage: {}            }        },

6.4 区域缩放

dataZoom 组件 用于区域缩放,从而能自由关注细节的数据信息,或者概览数据整体,或者去除离群点的影响。

        dataZoom: [            {                show: true,                realtime: true,                start: 80,                end: 100            },            {                type: 'inside',                realtime: true,                start: 65,                end: 100            }        ],


添加完4项扩展后,完整代码如下:

<script type="text/javascript">    //定义类    function Series(type, xdata, seriesData) {        this.typeName = type;        this.xdata = xdata;        this.seriesData = seriesData;    }
var myEChart = echarts.init(document.getElementById('myechart')); myEChart.clear(); var options = { title: { text: '数据曲线:', x: 'center' }, grid: { show: true, borderColor: '#19507c', x: 50, x2: 50, y: 40 }, toolbox: { feature: { dataZoom: { yAxisIndex: 'none' }, restore: {}, saveasImage: {} } }, tooltip: { trigger: 'axis', axisPointer: { type: 'cross', animation: false, label: { backgroundColor: '#505765' } } }, legend: { data: [], x: 'left' }, dataZoom: [ { show: true, realtime: true, start: 80, end: 100 }, { type: 'inside', realtime: true, start: 65, end: 100 } ], xAxis: { type: 'category', offset: 30 }, yAxis: { type: 'value', max: 90, min: -10 }, series: [] }
myEChart.setOption(options); $.get('/data.json').done(function (data) {
//var aa = JSON.parse(data); var x = []; $.each(data.List, function (n, value) { var xd = [], sd = []; $.each(value.Data, function (m, mValue) { xd.push(mValue.SaveTime); sd.push(mValue.WorkStationData); }); var s = new Series(value.TypeTitleName, xd, sd); x.push(s); });
var xStart = data.Start; var xEnd = data.End; options.xAxis.data = x[0].xdata; options.xAxis.start = xStart; options.xAxis.end = xEnd;
$.each(x, function (i, value) { options.title.text += value.typeName + " "; options.legend.data.push(value.typeName); options.series.push({ name: value.typeName, type: 'line', smooth: true, data: value.seriesData }); });        myEChart.setOption(options); });</script>

·END·

DotNetCore学习站

超乎想象的.NET Core学习资源

微信号:DotNetCore学习站

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312957.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超过1w的Github Star大佬和他们的公众号,太强了!

不少同学担忧的情况——“晋升无望、收入见顶、生活开支飙升、财务危机如影随形”&#xff0c;小编精心挑选了几个优质原创技术号&#xff0c;推荐给大家化解成长的烦恼。他们都是我平时关注的优秀号主&#xff0c;分享给大家&#xff0c;助大家学习路上披荆斩棘~Python爱好者社…

Java和C++区别

Java和C的区别有很多&#xff0c;主要集中在如下几个方面&#xff1a; 运行机制 Java&#xff1a; 编写&#xff1a;是指在Java开发环境&#xff08;Eclipse、Sublime等&#xff09;中进行程序代码的输入&#xff0c;最终形成后缀名为.java的Java源文件。 编译&#xff1a;是指…

未雨绸缪 | 一文简介 Azure Front Door

点击上方蓝字关注“汪宇杰博客”导语昨天早晨微软服务器发生了核爆&#xff0c;Office 365&#xff0c;Bing&#xff0c;Azure DevOps全线完蛋。人类文明危在旦夕之际&#xff0c;微软美国的死士凌晨2点爬起来收福报&#xff0c;修好了服务器&#xff0c;拯救了全人类&#xff…

左手专注,右手时间

大家好&#xff0c;我是Z哥。今天带来的是一篇有感而发的随笔&#xff0c;敬请品尝&#xff5e;前两天最火的事情莫过于WPS上市了。这个平时默默无闻、低调的可怕的产品一下子被捧上了天。我第一次接触到WPS还比较晚&#xff0c;大约在2014年的样子&#xff0c;当时由于某些特殊…

说说开源那些事儿

“ 阅读本文大概需要 9 分钟。 ”前段时间我们遇到了一个情况&#xff0c;课程推送发出来之后有位同学在群里提到&#xff0c;机构提供的项目就是他同学导师的开源项目。之后这位导师在文章评论里联系了我&#xff0c;表示该机构课程涉嫌开源侵权他的 GitHub 开源项目。我们后台…

Linux下Tomcat安装和配置

1、前提&#xff08;JDK环境&#xff09;Tomcat的安装需要JDK环境&#xff0c;如何配置JDK环境见我的文章Linux下Java环境配置&#xff0c;所以在安装Tomcat之前需要先检测JDK环境是否配置好。 进入命令行界面&#xff0c;输入java -version命令来查看JDK环境是否配置成功&…

ASP.NET Core快速入门(第1章:介绍与引入)--学习笔记

点击蓝字关注我们课程链接&#xff1a;http://video.jessetalk.cn/course/explore良心课程&#xff0c;大家一起来学习哈&#xff01;任务1&#xff1a;课程介绍1、介绍与引入2、配置管理3、依赖注入4、ASP.NET Core HTTP介绍5、认证与授权6、ASP.NET Core MVC任务2&#xff1a…

Eclipse下Tomcat服务器配置和使用

在安装完Tomcat之后&#xff0c;在没有进行相关配置时&#xff0c;我们需要到终端下面去启动Tomcat。如果我们在使用Eclipse进行Java开发时&#xff0c;如果能够直接启动Tomcat服务器那将是极为方便&#xff0c;本篇就来讲述Eclipse下Tomcat服务器如何配置以及如何使用。 1、配…

Facebook押注VS Code

Facebook 近日宣布默认采用 VS Code 作为内部开发环境。去年 Facebook 宣布停止维护其开源的 Nuclide/Atom-IDE&#xff0c;以及相关的一些库。Nuclide/Atom-IDE 是 Atom 编辑器的功能包&#xff0c;其通过语言服务器协议与自定义语言服务器交互&#xff0c;为 Atom 提供一系列…

Linux下软件安装和卸载

在Windows下&#xff0c;我们安装软件基本上是先到网上下载软件的安装包&#xff0c;通常是以.exe和.msi为后缀的文件&#xff0c;然后双击安装包&#xff0c;之后就可以按照软件安装向导一步步进行安装了&#xff0c;但在Linux下&#xff0c;软件的安装方式截然不同。总的来说…

为WPF, UWP 及 Xamarin实现一个简单的消息组件

友情提示&#xff1a;阅读本文大概需要8分钟。欢迎大家点击上方公众号链接关注我&#xff0c;了解新西兰码农生活本文目录&#xff1a;1. 介绍2. Message - 消息3. Subscription - 订阅4. MessageHub - 消息总线4.1 Subscribe - 订阅4.2 Unsubscribe - 取消订阅4.3 Publish - 发…

Mac(OS X)安装、配置并使用MySQL数据库

1、MySQL安装包下载 MySQL Community Server下载地址&#xff1a;http://dev.mysql.com/downloads/mysql/&#xff0c;下载完毕之后安装文件如下所示&#xff1a; 2、MySQL安装 双击安装文件进行安装&#xff0c;出现如下界面&#xff1a; 双击窗体中的“mysql-5.7.10-osx10.9-…

用ASP.NETCore构建可检测的高可用服务

一、前言2019 中国 .NET 开发者峰会&#xff08;.NET Conf China 2019&#xff09;于2019年11月10日完美谢幕&#xff0c;校宝在线作为星牌赞助给予了峰会大力支持&#xff0c;我和项斌等一行十位同事以讲师、志愿者的身份公司参与到峰会的支持工作中&#xff0c;我自己很荣幸能…

Mac(OS X)使用brew安装软件

在Linux下&#xff0c;常用的软件包管理工具有RedHat系的yum和Debian系的apk-get&#xff0c;对于Mac的OS X系统来说&#xff0c;同样有这样的形式的软件包管理工具&#xff0c;即&#xff1a;brew。 brew 又叫Homebrew&#xff0c;是Mac OSX上的软件包管理工具&#xff0c;能…

SonarQube系列二、分析dotnet core/C#代码

来源&#xff1a;https://www.cnblogs.com/7tiny/p/11342902.html【前言】本系列主要讲述sonarqube的安装部署以及如何集成jenkins自动化分析.netcore项目。目录如下&#xff1a;SonarQube系列一、Linux安装与部署SonarQube系列二、分析dotnet core/C#代码SonarQube系列三、如何…

Eclipse使用Maven插件创建Web项目时出错:Could not resolve archetype org.apache.maven.archetypes

问题描述&#xff1a; 在Eclipse下&#xff0c;使用Maven插件创建Web项目时出错&#xff0c;错误提示如下&#xff1a; 错误信息&#xff1a; Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp:1.0 from any of the configured repositories. …

ASP.NET Core快速入门(第2章:配置管理)--学习笔记

点击蓝字关注我们课程链接&#xff1a;http://video.jessetalk.cn/course/explore良心课程&#xff0c;大家一起来学习哈&#xff01;任务9&#xff1a;配置介绍命令行配置Json文件配置从配置文件文本到c#对象实例的映射 - Options 与 Bind配置文件热更新框架设计&#xff1a;C…

怎么写技术简历?

作者&#xff1a;zollty&#xff0c;资深程序员和架构师&#xff0c;私底下是个爱折腾的技术极客&#xff0c;架构师社区合伙人&#xff01;纯手打&#xff0c;个人多年经验总结。&#xff08;本人的简历&#xff0c;历年来效果都不错&#xff0c;从校招到高端技术岗位、大厂技…

C# 代码中调用 Javascript 代码段以提高应用程序的配置灵活性(使用 Javascript .NET 与 Jint)...

一般来说&#xff0c;我们需要在开发应用软件的配置文件中&#xff0c;添加一些参数&#xff0c;用于后续用户根据实际情况&#xff0c;自行调整。配置参数&#xff0c;可以放在配置文件中、环境变量中、或数据库表中(如果使用了数据库的话)。通常&#xff0c;配置数据&#xf…

Code Runner for VS Code 突破 1000 万下载量!支持运行超过 40 种语言

记得三年多前&#xff0c;韩老师那时还在写 PHP&#xff08;是的&#xff0c;没错&#xff01;在微软写 PHP&#xff09;&#xff0c;同时需要写 Python 和 Node.js 。所以在那时&#xff0c;支持多种语言的 VS Code 已经是笔者的主力编辑器了。唯一不足的是&#xff0c;韩老师…