利用Highcharts插件制作动态图表

简介: 原文:利用Highcharts插件制作动态图表向大家推荐一款js插件,用于绘制图表Highcharts,具体操作可参考官方网站:http://www.hcharts.cn/ 1.如下为本人制作的图形效果如下,当然其效果远不止这些,大家还可以深入研究!     2.
原文: 利用Highcharts插件制作动态图表

向大家推荐一款js插件,用于绘制图表Highcharts,具体操作可参考官方网站:http://www.hcharts.cn/

1.如下为本人制作的图形效果如下,当然其效果远不止这些,大家还可以深入研究!

 

 

2.下面我来讲解下是如何制作的

首先需要下载并引入 highcharts.js 文件  <script src="../../Scripts/highcharts.js" type="text/javascript"></script>

 

3.后台拼接hightchart所需的数据,如下为datatable中的数据,产出面积SF和工时产出分别为highcharts中的两类数据

          //按照highcharts可识别的格式来组装datatable中的数据
          StringBuilder categories = new StringBuilder();
          //series_SF为产出面积SF数据 StringBuilder series_SF
= new StringBuilder();
         //series_WH为工时产出数据 StringBuilder series_WH
= new StringBuilder(); Dictionary<string, string> objDic = new Dictionary<string, string>(); //循環添加highchartsX,Y轴所需的數據 for (int i = 2; i < table.Columns.Count; i++) {
            //X轴所需的數據 categories.AppendFormat(table.Columns[i].ColumnName
+ ",");

            //Y产出面积SF所需的數據
if (string.IsNullOrEmpty(table.Rows[0][i].ToString())) { series_SF.AppendFormat("0,"); } else { series_SF.AppendFormat(table.Rows[0][i].ToString() + ","); }             //Y轴 工时产出所需的數據 if (string.IsNullOrEmpty(table.Rows[2][i].ToString())) { series_WH.AppendFormat("0,"); } else { series_WH.AppendFormat(table.Rows[2][i].ToString() + ","); } } //刪除最有一個多餘的","號 if (table.Columns.Count > 0) { categories.Remove(categories.Length - 1, 1); series_SF.Remove(series_SF.Length - 1, 1); series_WH.Remove(series_WH.Length - 1, 1); } objDic.Add("categories", categories.ToString()); objDic.Add("series_SF", series_SF.ToString()); objDic.Add("series_WH", series_WH.ToString());

          //转换为json格式数据,返回给前台界面
return Common.JsonHelper.ToJson(objDic);

 

4.前台接受数据

{"categories":"03/01,03/02,03/03,03/04,03/05,03/06,03/07,03/08,03/09,03/10,03/11,03/12,03/13,03/14,03/15,03/16,03/17,03/18,03/19,03/20",

"series_SF":"0,0,0,50.94,0,47.60,8.72,0,0,8.00,0,62.96,50.94,101.88,25.47,0,0,52.50,25.47,0",

"series_WH":"0.00,0.00,0.00,2.12,0.00,1.98,0.36,0.00,0.00,0.33,0.00,2.62,2.12,4.25,1.06,0.00,0.00,2.19,1.06,0.00"}

 

5.绑定并加载highcharts

            //繪製兩個Y軸的混合圖
                    var options = {
                        chart: {
                 //将该图表绑定给id为container_day的元素 如:<div id="container_day"  style="min-width:800px;height:400px;"></div> renderTo:
'container_day',
                //图表类型 zoomType:
'xy' }, title: {
                //图表的标题 text:
'站別工時產出-日報' }, xAxis: {
                //X轴的值 在post中动态加载 categories: [] }, yAxis: [{
                //Y轴的值 在post中动态加载 labels: { style: { color:
'#89A54E' } }, title: { text: '產出面積SF', style: { color: '#89A54E' } } }, { title: { text: '工時產出', style: { color: '#4572A7' } }, labels: { style: { color: '#4572A7' } }, opposite: true }], tooltip: { shared: true },
              //两个Y轴的类别   series: [] };
//獲取折綫圖X,Y軸值 $.post("/PI/PDL_ProcTimeOut_highcharts", { "BDate": $("#BDate").datebox('getValue'), "EDate": $("#EDate").datebox('getValue'), "ProcCode": $("#ProcCode").combobox('getValue') }, function (data) { var json = eval("(" + data + ")"); //綁定X軸 var categories = json.categories.split(','); $.each(categories, function (itemNo, item) { options.xAxis.categories.push(item); }); //綁定Y軸 var series_SF = json.series_SF.split(','); var series_WH = json.series_WH.split(','); var series_0 = { data: [] }; var series_1 = { data: [] }; series_0.name = "產出面積SF"; series_0.color = "#4572A7"; series_0.type = "column", $.each(series_SF, function (itemNo, item) { series_0.data.push(parseFloat(item)); }); series_1.name = "工時產出"; series_1.color = "#89A54E"; series_1.type = "spline", series_1.yAxis = 1, $.each(series_WH, function (itemNo, item) { series_1.data.push(parseFloat(item)); }); options.series.push(series_0); options.series.push(series_1); var chart = new Highcharts.Chart(options); }); //end post

 

目录
相关文章
|
2月前
|
XML 前端开发 JavaScript
前端图形学实战: 从零实现编辑器的图层管理面板和实时缩略图(vue3 + vite版)
前端图形学实战: 从零实现编辑器的图层管理面板和实时缩略图(vue3 + vite版)
26 0
|
编解码 程序员 atlas
Unity 之 图集属性详解和代码示例 -- 拓展一键自动打包图集工具
图集只是当所有给低昂的纹理需要相同的着色器时采用的一种方法,如果一些纹理需要通过着色器应用独立的图形效果,它们就必须分离到自己的材质中,并在单独的组中打图集。
1393 0
Unity 之 图集属性详解和代码示例 -- 拓展一键自动打包图集工具
|
9月前
|
数据可视化 定位技术
地图可视化开发技巧:geojson转svg后再转emf格式插入ppt实现编辑的解决方案
地图可视化开发技巧:geojson转svg后再转emf格式插入ppt实现编辑的解决方案
107 0
|
10月前
vue3_制作一个在线修改svg颜色功能
vue3_制作一个在线修改svg颜色功能
153 1
|
8月前
|
Java BI API
探索Batik库:优雅处理SVG图形的利器
在现代的应用开发中,矢量图形的使用越来越广泛,特别是在Web开发和图像处理领域。Batik库作为一款优雅的SVG图形处理工具,可以帮助我们生成、操作和展示矢量图形。本文将深入探讨Batik库的基本概念、特点,以及如何在实际应用中使用它进行SVG图形处理。
699 0
|
9月前
|
XML 人工智能 搜索推荐
Echarts实战案例代码(5):liquidFill水球组件利用svg path定制你自己的个性化图标动态图
Echarts实战案例代码(5):liquidFill水球组件利用svg path定制你自己的个性化图标动态图
240 0
|
11月前
|
JavaScript 前端开发 数据可视化
再不用怕Markdown中的绘图了,GitHub官方支持Mermaid图表绘制工具
再不用怕Markdown中的绘图了,GitHub官方支持Mermaid图表绘制工具
130 0
|
数据可视化 CDN
【实战篇】37 # 如何使用 QCharts 图表库绘制常用数据图表?
【实战篇】37 # 如何使用 QCharts 图表库绘制常用数据图表?
136 0
【实战篇】37 # 如何使用 QCharts 图表库绘制常用数据图表?
|
数据可视化 开发者
实用技巧 | Pyecharts可视化渲染为图片保存
使用 pyecharts 渲染成图片一直是开发者比较关心的功能,pyecharts提供了 selenium、phantomjs 和 pyppeteer 三种方式
1264 0
实用技巧 | Pyecharts可视化渲染为图片保存
【D3.js 学习总结】14、D3布局-打包图
# d3.layout.pack() 打包图用于表示包含与被包含的关系,也可表示各对象的权重,通常用一圆套一圆来表示前者,用圆的大小来表示后者。 #### 打包图(Pack)的API说明 * pack.children - 取得或设置子节点的访问器。 * pack.links - 计算树节点中的父子链接。 * pack.nodes - 计算包布局并返回节点数组。 * pac
2210 0