http://www.cnblogs.com/wuhuacong/p/3736564.html

在我们做各种应用的时候,我们可能都会使用到图表统计,以前接触过一些不同的图表控件,在无意中发现了图表控件Highcharts,其强大的功能和丰富的互动效果,令人难以忘怀。本篇主要介绍在Web开发中使用图表控件Highcharts,以及对其进行统一汉化等操作,让我们的程序功能更加丰富,内容更加美观。

1、Highcharts基础介绍

Highcharts是一个非常流行,界面美观的纯Javascript图表库。它主要包括两个部分:Highcharts和Highstock。Highcharts可以为您的网站或Web应用程序提供直观,互动式的图表。目前支持线,样条,面积,areaspline,柱形图,条形图,饼图和散点图类型。Highstock可以为您方便地建立股票或一般的时间轴图表。它包括先进的导航选项,预设的日期范围,日期选择器,滚动和平移等等。

HIghChartS官网:http://www.highcharts.com/

HighCharts Demo:http://www.highcharts.com/demo/

Highcharts支持曲线图、饼图、柱状图、仪表图、散点图等等几十种图形,界面展示效果非常丰富,3D效果也很好看。列出几个供参考下吧

   

Highcharts使用jQuery等Javascript框架来处理基本的Javascript任务。因此,在使用Highcharts之前,需要在页面头部引用这些脚本文件。如果你使用jQuery作为基本框架,那么你需要在页面头部同时引用jQuery和Hightcharts两个文件就可以了。

由于我在Web开发框架中,主要采用了MVC+EasyUI的方式,因包含的文件如下所示。

    @*添加Jquery,EasyUI和easyUI的语言包的JS文件*@<script type="text/javascript" src="~/Content/JqueryEasyUI/jquery.min.js"></script><script type="text/javascript" src="~/Content/JqueryEasyUI/jquery.easyui.min.js"></script><script type="text/javascript" src="~/Content/JqueryEasyUI/locale/easyui-lang-zh_CN.js"></script>@*图表JS文件应用*@<script src="~/Content/JQueryTools/Highcharts/js/highcharts.js"></script>

但是为了更好的展示效果,我们一般添加一个图标预定义的样式进去,同时添加导出功能的脚本,如下所示。

    @*图表JS文件应用*@<script src="~/Content/JQueryTools/Highcharts/js/highcharts.js"></script><script src="~/Content/JQueryTools/Highcharts/js/modules/exporting.js"></script><script src="~/Content/JQueryTools/Highcharts/js/themes/grid.js"></script>

当然,如果我们散点图、3D图形等内容,还需要引入一些额外的js文件的

    <script src="~/Content/JQueryTools/Highcharts/js/highcharts-more.js"></script><script src="~/Content/JQueryTools/Highcharts/js/highcharts-3d.js"></script>

2、图表的生成操作

前面说了,这个图表控件主要就是使用Jquery和Javascript来实现,我们来分析下一个饼图的Demo代码。

$(function () {$('#container').highcharts({chart: {plotBackgroundColor: null,plotBorderWidth: null,plotShadow: false},title: {text: 'Browser market shares at a specific website, 2014'},tooltip: {pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'},plotOptions: {pie: {allowPointSelect: true,cursor: 'pointer',dataLabels: {enabled: true,format: '<b>{point.name}</b>: {point.percentage:.1f} %',style: {color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'}}}},series: [{type: 'pie',name: 'Browser share',data: [['Firefox',   45.0],['IE',       26.8],{name: 'Chrome',y: 12.8,sliced: true,selected: true},['Safari',    8.5],['Opera',     6.2],['Others',   0.7]]}]});
});

上面的脚本主要就是根据series属性里面的数据进行生成饼图的,那么我们实际开发的时候,数据肯定不是固定的,一般我们是通过动态方式赋值的。

如我一般倾向于使用Jquery的Ajax方式,调用后台获得数据,然后进行绑定的。那么这种情况下,如何操作脚本了呢,我们来分析看看。

首先我们先在脚本函数里面,初始化一个chart对象,并把其中涉series数据data设置为空就是了。

            var chart1 = new Highcharts.Chart({chart: {renderTo: "container1",plotBackgroundColor: null,plotBorderWidth: null,plotShadow: false,},title: {text: '集团分子公司人员组成'},tooltip: {pointFormat: '{series.name}: <b>{point.y}</b>'},plotOptions: {pie: {allowPointSelect: true,cursor: 'pointer',dataLabels: {enabled: true,format: '<b>{point.name}</b>: {point.percentage:.1f} %',style: {color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'}},//showInLegend: true}},series: [{type: 'pie',name: '人员数量',data: []}]});

第二步是通过Ajax调用后台连接获得数据,然后绑定到具体的属性上就可以了,具体代码如下所示。

            //通过Ajax获取图表1数据$.ajaxSettings.async = false;var data1 = [];$.getJSON("/User/GetCompanyUserCountJson", function (dict) {                for (var key in dict) {if (dict.hasOwnProperty(key)) {data1.push([key, dict[key]]);}};chart1.series[0].setData(data1);});

而图表的HTML代码则是如下所示,主要就是新增一个div,id为container1,用来放置图表就是了。

                             <div class="box"><div class="box-title"><div style="float: left"><img src="~/Content/JqueryEasyUI/themes/icons/customed/user.png" alt="" width="20" height="20" />图表1</div><div style="float: right; padding-right: 10px;">更多</div></div><div class="box-content" style="height: 310px"><div id="container1" style="height: 300px;max-width:500px"></div></div></div>

完成以上的代码,我们运行就可以看到下面的图形了,这样看起来是不是比较酷一些呢。

3、图表的导出功能及菜单汉化

从上面的图表里面看到,每个图表的右上角,都有一个菜单的功能,里面有一些功能,如打印图片、导出图片等操作,具体菜单的表现如下所示。

但是上面的菜单式我经过了汉化处理的, 默认的显示效果是英文的,如下所示。

显然英文的菜单,不是我们希望的,我们需要汉化一下才更好,那么如何汉化上面的通用菜单呢,需要每个模块都重复一样的汉化吗,当然不需要了。我们可以把它放到全局设置里面。

前面我们介绍了,为了使得图表展示更好的效果,我们包含了一个grid.js的图表样式,其实里面也还有其他样式可以使用的,不过我觉得还是grid.js的样式最佳,如下所示。

那么既然使用了这个样式设置,我们把全局的一些设置,如汉化的操作,也放到这里就可以了。

我们在这个文件的底部,增加一个SetOption的操作代码就可以,这些汉化的菜单,由于我使用了最新版本,有些参数是和旧版本不一致的,所以冲着这个辛苦劲,应该推荐鼓励下哦。呵呵

设置汉化的代码。如下所示。

// Apply the theme
var highchartsOptions = Highcharts.setOptions(Highcharts.theme);//汉化图表菜单
Highcharts.setOptions({lang: {contextButtonTitle: "图表菜单",printChart: "打印图片",downloadJPEG: "下载JPEG 图片",downloadPDF: "下载PDF文档",downloadPNG: "下载PNG 图片",downloadSVG: "下载SVG 矢量图",exportButtonTitle: "导出图片"}
});

转载于:https://www.cnblogs.com/telwanggs/p/7125440.html

(转)基于MVC4+EasyUI的Web开发框架经验总结(4)--使用图表控件Highcharts相关推荐

  1. 基于MVC4+EasyUI的Web开发框架经验总结(8)--实现Office文档的预览

    在博客园很多文章里面,曾经有一些介绍Office文档预览查看操作的,有些通过转为PDF进行查看,有些通过把它转换为Flash进行查看,但是过程都是曲线救国,真正能够简洁方便的实现Office文档的预览 ...

  2. [转载]基于MVC4+EasyUI的Web开发框架经验总结(8)--实现Office文档的预览

    在博客园很多文章里面,曾经有一些介绍Office文档预览查看操作的,有些通过转为PDF进行查看,有些通过把它转换为Flash进行查看,但是过程都是曲线救国,真正能够简洁方便的实现Office文档的预览 ...

  3. 基于MVC4+EasyUI的Web开发框架经验总结(6)--在页面中应用下拉列表的处理

    在很多Web界面中,我们都可以看到很多下拉列表的元素,有些是固定的,有些是动态的:有些是字典内容,有些是其他表里面的名称字段:有时候引用的是外键ID,有时候引用的是名称文本内容:正确快速使用下拉列表的 ...

  4. (转)基于MVC4+EasyUI的Web开发框架经验总结(8)--实现Office文档的预览

    http://www.cnblogs.com/wuhuacong/p/3871991.html 基于MVC4+EasyUI的Web开发框架经验总结(8)--实现Office文档的预览 在博客园很多文章 ...

  5. 基于MVC4+EasyUI的Web开发框架经验总结(11)--使用Bundles处理简化页面代码

    基于MVC4+EasyUI的Web开发框架经验总结(11)--使用Bundles处理简化页面代码 在Web开发的时候,我们很多时候,需要引用很多CSS文件.JS文件,随着使用更多的插件或者独立样式文件 ...

  6. (转)基于MVC4+EasyUI的Web开发框架经验总结(12)--利用Jquery处理数据交互的几种方式...

    http://www.cnblogs.com/wuhuacong/p/4085682.html 在基于MVC4+EasyUI的Web开发框架里面,大量采用了Jquery的方法,对数据进行请求或者提交, ...

  7. (转)基于MVC4+EasyUI的Web开发框架经验总结(10)--在Web界面上实现数据的导入和导出...

    http://www.cnblogs.com/wuhuacong/p/3873498.html 数据的导入导出,在很多系统里面都比较常见,这个导入导出的操作,在Winform里面比较容易实现,我曾经在 ...

  8. (转)基于MVC4+EasyUI的Web开发框架经验总结(7)--实现省份、城市、行政区三者联动...

    http://www.cnblogs.com/wuhuacong/p/3841338.html 为了提高客户体验和进行一些技术探索,现在正准备把我自己的客户关系管理系统CRM在做一个Web的版本,因此 ...

  9. (转)基于MVC4+EasyUI的Web开发框架经验总结(5)--使用HTML编辑控件CKEditor和CKFinder...

    http://www.cnblogs.com/wuhuacong/p/3780356.html Web开发上有很多HTML的编辑控件,如CKEditor.kindeditor等等,很多都做的很好,本文 ...

最新文章

  1. Linux——文件管理之inode
  2. c语言的图像拼接,OpenCV实现多图像拼接成一张大图分享!
  3. [经典面试题]二叉树宽度
  4. delphi tclientsocket接收不到返回数据_RS—485中教你主站发送报文结构、从站返回报文结构?系列11...
  5. iOS - 上架的APP 生成二维码下载
  6. c语言枚举代替双switch,C语言 使用数组代替switch分支语句降低圈复杂度
  7. 7-277 单身狗 (25 分)
  8. mysql修改字段结构_MySQL修改表结构及其添加删除修改字段功能
  9. 震惊!雷军表示要出千元5G手机!
  10. 税控盘查看服务器设置的网站,税控盘服务器地址
  11. matlab 生成gcode文件,解析gcode文件以提取坐标
  12. html5商城后台源码,商城后台管理系统HTML+css+jquery
  13. 网上购物系统问题陈述、词汇表与领域类图
  14. android pc游戏模拟器哪个好用,哪个电脑手游模拟器好用 安卓手游模拟器测试对比排行榜...
  15. HDS VSP/VM高端存储更换电池
  16. django学习笔记(六)-----模型
  17. Could not enlist in transaction on entering meta-aware object
  18. 桌面窗口管理器占用内存大的解决办法
  19. 带缓冲的输入/输入流
  20. Linux系统怎么复制文件夹下的全部文件到另外文件夹?

热门文章

  1. mysql tuning primer_mysql检测工具tuning-primer.sh
  2. (72)Verilog HDL系统函数和任务:$display
  3. 电脑主板跳线_DIY电脑主板的跳线安装及排序规则
  4. 2022.管理类软件工具
  5. 7001.ubuntu18.04搭建go语言开发环境
  6. Cadence Virtuoso IC617的启动和新建工程
  7. rtthread pwm设备控制led小灯亮度
  8. console_init_r()函数分析
  9. 【数电】(一) 进制转换编码 原码,反码,补码
  10. c语言float如何做减法,利用c语言设计开发一个简单计算器,可进行加减乘除运算....