echart图表之highcharts

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、HighCharts是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.前端代码
    • 3.展现结果
    • 4.后台自动截图
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

前段时间公司要统计各个站的OEE机台的使用率,在网页上前端上展现OEE图表,难点在与如何将这些数据转成合理的数据展现出来


提示:以下是本篇文章正文内容,下面案例可供参考

一、HighCharts是什么?

1、HighCharts是网页报表工具,开发语言是Javascript
2、HighCharts是一个简单易用、美观、跨平台、跨浏览器的,兼容 IE6+、完美支持移动端、图表类型丰富、方便快捷的 HTML5 交互性图表库
3、HighCharts支持图表的类型有:曲线图、柱状图、饼状图、区域图、散点图、综合图的各种图表需求。

二、使用步骤

1.引入库

代码如下(示例):

1、引入Jquery(HighCharts是基于Jquery框架开发的)
2、引入HighCharts.js
3、引入exporting.js(导出功能)

2.前端代码

代码如下(示例):

    <script type="text/javascript">
        var operData = [];
        $(document).ready(function () {

            var options = {
                chart: {
                    type: 'column',
                    events: {
                        drilldown: function (e) {
                            //alert("dddd");
                        }
                    }
                },
                colors: ['#00FFFF', '#0066FF', '#FF0000', '#990033', '#FFC000', '#FF0000', '#8d4653', '#8085e9', '#f15c80', '#e4d354', '#8085e8'],
                title: {
                    text: '各工序的OEE'
                   
                },
                subtitle: {
                    text: '点击可查看具体的版本数据,数据来源: <a href="#"></a>.'
                   
                },
                xAxis: {
                    type: 'category'
                },
                yAxis: {
                    title: {
                        text: 'OEE'
                    },
                    tickPositions: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
                },
                legend: {
                    enabled: true
                },
                plotOptions: {
                    series: {
                        borderWidth: 1,
                        borderColor: "#FFFFFF",
                        borderRadius: 2,
                        dataLabels: {
                            enabled: true,
                            format: '{point.y:.1f}%'
                        }
                    },
                    column: {
                        stacking: 'normal',
                        cursor: 'pointer',
                        point: {
                            events: {
                                click: function (e) {
                                    if (e.point.name != null) {
                                        //alert(e.point.name);
                                        var type = $("#<%=ddlType.ClientID %>").val();
                                        var year = $("#<%=ddlYear.ClientID %>").val();
                                        var monthWeekly = $("#<%=ddlMonthWeekly.ClientID %>").val();
                                        var day = $("#<%=ddlDay.ClientID %>").val();
                                        var depart = $("#<%=ddlOcapDepart.ClientID %>").val();

                                        var ndate = "";
                                        if (type == "Daily") {
                                            ndate = year + monthWeekly + day;
                                        } else if (type == "Weekly") {
                                            ndate = year + monthWeekly
                                        } else if (type == "Monthly") {
                                            ndate = year + monthWeekly
                                        }
                                        var title = type + "_" + ndate + "_" + depart + "_EquipList";

                                        $("#<%=HiddenField1.ClientID %>").val(e.point.name);
                                        $("#equipid").val("");
                                        $("#searchInfo").show();
                                        InitGird(title, type, ndate, depart, e.point.name);
                                    }
                                }
                            }
                        }
                    }
                },
                tooltip: {
                    useHTML: true,
                    style: {
                        padding: 0,
                        pointerEvents: 'auto'
                    },
                    shared: false,
                    formatter: function () {
                        var type = $("#<%=ddlType.ClientID %>").val();
                        var year = $("#<%=ddlYear.ClientID %>").val();
                        var monthWeekly = $("#<%=ddlMonthWeekly.ClientID %>").val();
                        var day = $("#<%=ddlDay.ClientID %>").val();
                        var depart = $("#<%=ddlOcapDepart.ClientID %>").val();
                        if (type == "Daily") {
                            ndate = year + monthWeekly + day;
                        } else if (type == "Weekly") {
                            ndate = year + monthWeekly
                        } else if (type == "Monthly") {
                            ndate = year + monthWeekly
                        }
                        if (type == "Daily") {
                            return this.series.name + "<br/>" + this.point.name + ': ' + this.point.y.toFixed(1) + '%';
                        } else {
                            return this.series.name + "<br/>" + '<a href="http://localhost:48057/Summary_OEE_Report_Oper_Detail.aspx?type=' + type + '&oper=' + this.point.name + '&ndate=' + ndate + '&depart=' + depart + '" target="_blank">' + this.point.name + ': ' + this.point.y.toFixed(1) + '%' + '</a>'
                        }
                    }
                },
                series: [],
                drilldown: {
                    series: []
                }
            };

3.展现结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.后台自动截图

1、在服务器上部署自动截图的API
http://*********:11942/
2、创建模板

{
	"chart": {
		"width": 900,
		"type": "column"
	},
	"credits":false,
	"colors": [
		"#00FFFF",
		"#0066FF",
		"#FF0000",
		"#990033",
		"#FFC000",
		"#FF0000",
		"#8d4653",
		"#8085e9",
		"#f15c80",
		"#e4d354",
		"#8085e8"
	],
	"title": {
		"text": "$title"
	},
	"subtitle": {
		"text": ""
	},
	"xAxis": {
	    "type": "category",
		"labels": {
                "style": {
                    "fontWeight": "bold"
                }
            }
    },
	"yAxis": {
		"title": {
			"text": "OEE(%)"
		},
		
		"tickPositions": [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
	},
	"legend": {
		"enabled": true
	},
	"plotOptions": {
		"series": {
			"borderWidth":1,
			"borderColor": "white",
			"borderRadius":2,
			"dataLabels": {
				"enabled": true,
				"format":"{point.y:.1f}%"
			}
		},
		"column": {
	        "stacking": "normal",
	        "cursor": "pointer",
	        "dataLabels": {
		        "enabled": true,
		        "color": "white",
		        "style": {
			        "textShadow": "0 0 3px black",
					"fontWeight": "bold"
		        }
	        }
        }
	},
	"tooltip": {
        "useHTML": true,
        "style": {
            "padding": 0,
            "pointerEvents": "auto"
        },
	    "shared": false
	 },
	"series": [$series],
    "drilldown": {
	    "series": [$drilldown]
    }
}

3、调用API接口生成图片

  string chartJsonPath = Environment.CurrentDirectory + "//Json//chart.json";
            StreamReader sr = new StreamReader(chartJsonPath, Encoding.Default);
            string line;
            string jsonobj = "";
            while ((line = sr.ReadLine()) != null)
            {
                jsonobj = jsonobj + line.ToString();
            }

            string url = System.Configuration.ConfigurationSettings.AppSettings["PhantomjsUrl"].ToString();
            string param = jsonobj.Replace("$series", sbSerie.ToString()).Replace("$drilldown", sbDrilldownSerie.ToString()).Replace("$title", type + "_" + ndate + "_" + depart + "_OEE");

            KTD.Utilities.BaseUtils.FileUtils.CreateFile(Encoding.UTF8.GetBytes(param), Environment.CurrentDirectory + "//Json//" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".json");
            byte[] bytes;
            var client = new HttpClient();
            HttpContent content = HttpContent.Create(Encoding.UTF8.GetBytes(param), "application/json");
            using (HttpResponseMessage responseMessage = client.Post(url, content))
            {
                responseMessage.EnsureStatusIsSuccessful();
                bytes = responseMessage.Content.ReadAsByteArray();
            }

            MemoryStream stream = new MemoryStream(bytes);
            Bitmap bmp = new Bitmap(stream);
            string randomName = ndate +"_"+ depart+".png";
            string saveUrl = System.Configuration.ConfigurationSettings.AppSettings["SaveUrl"].ToString() + "//" + randomName;
            bmp.Save(saveUrl, ImageFormat.Png);
            stream.Dispose();
            stream.Close();
            bmp.Dispose();

3、截图效果如下
在这里插入图片描述


总结

发现截来的图片和系统执行出来的图样式不能完全一模一样,估计是使用脚本的版本不一样导致。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue2前端实现html导出pdf功能

1. 功能实现方案 1.html转换成canvas后生成图片导出pdf&#xff08;本文选用&#xff09; html转canvas插件&#xff1a;html2canvas是一款将HTML代码转换成Canvas的插件&#xff1b;canvas生成pdf&#xff1a;jsPDF是一个使用Javascript语言生成PDF的开源库 2.HTML代码转出…

FPGA纯verilog实现RIFFA的PCIE通信,提供工程源码和软件驱动

目录1、前言2、RIFFA简介RIFFA概述RIFFA架构RIFFA驱动3、vivado工程详解4、上板调试验证并演示5、福利&#xff1a;工程代码的获取1、前言 PCIE是目前速率很高的外部板卡与CPU通信的方案之一&#xff0c;广泛应用于电脑主板与外部板卡的通讯&#xff0c;PCIE协议极其复杂&…

Python3实现AI版贪吃蛇

导语利用Python简单地实现AI版的贪吃蛇。。。just for fun...没有用深度学习。。。算法是由一个叫Hawstein的人在好多好多年以前提出&#xff0c;感觉很有趣&#xff0c;就花了点时间复现了一下他的想法。。。至于效果。。。看脸。。。真的只是觉得他的想法很有趣&#xff0c;仅…

AI_Papers周刊:第六期

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 2023.03.13—2023.03.19 文摘词云 Top Papers Subjects: cs.CL 1.UPRISE: Universal Prompt Retrieval for Improving Zero-Shot Evaluation 标题&#xff1a;UPRISE&#xff1a;改进零样本评估…

Java面向对象:接口的学习

本文介绍了Java中接口的基本语法, 什么是接口, java中的接口 语法规则, 接口的使用,接口的特性,如何实现多个接口,接口间的继承,以及抽象类和接口的区别 Java接口的学习一.接口的概念二.Java中的接口1.接口语法规则2.接口的使用3.接口的特性4.实现多个接口5.接口间的继承三.抽象…

Vue学习 -- 如何用Axios发送请求(get post)Promise对象 跨域请求问题

什么是Axios Vue本身是不支持发送axios请求&#xff0c;需要使用第三方插件&#xff0c;这里推荐使用Axios&#xff0c;Axios是基于promise的HTTP库&#xff1b;它会从浏览器中创建XMLHttpRequset对象。 安装Axios npm install axios -S下载后把axios.js文件复制进项目目录 …

QT串口助手开发3串口开发

系列文章目录 QT串口助手开发3串口开发 QT串口助手开发3系列文章目录一、UI界面程序的编写二、发送框程序编写一、UI界面程序的编写 根据上文的未解决问题&#xff1a;我们打开串口按钮打开后只能选择关闭串口&#xff0c;所以这个是循环的过程 上文链接 所以按钮对应的槽函数…

VR全景城市,用720全景树立城市形象,打造3D可视化智慧城市

随着城市化进程的加速&#xff0c;城市之间的竞争也日益激烈。城市管理者们需要寻求新的方式来提升城市的品牌形象和吸引力。在这个过程中&#xff0c;VR全景营销为城市提供了一种全新的营销手段&#xff0c;可以帮助提升城市的价值和吸引力。一、城市宣传新方式VR全景营销是一…

《Linux的权限》

本文主要对linux的一些基本权限进行讲解 文章目录前言Linux权限&#xff08;1&#xff09;权限的概念&#xff08;2&#xff09;linux下用户分类(root,普通)(3)linux的文件属性文件属性的分类文件权限修改文件权限1、chmod2、chown和chgrp3、fiile权限的三个重要的问题第一个问…

考研408每周一题(2019 41)

2019年(单链表&#xff09; 41.(13分)设线性表L(a1,a2,a3,...,a(n-2),a(n-1),an)采用带头结点的单链表保存&#xff0c;链表中的结点定义如下&#xff1a; typedef struct node {int data;struct node *next; } NODE; 请设计一个空间复杂度为O(1)且时间上尽可能高效的算法&…

嵌入式学习笔记——STM32的时钟树

时钟树前言时钟树时钟分类时钟树框图LSI与LSEHSI、HSE与PLL系统时钟的产生举例AHB、APBx的时钟配置时钟树相关寄存器介绍1.时钟控制寄存器&#xff08;RCC_CR&#xff09;2.RCC PLL 配置寄存器 (RCC_PLLCFGR)3.RCC 时钟配置寄存器 (RCC_CFGR)4.RCC 时钟中断寄存器 (RCC_CIR)修改…

基于 Apache Flink 的实时计算数据流业务引擎在京东零售的实践和落地

摘要&#xff1a;本文整理自京东零售-技术研发与数据中心张颖&闫莉刚在 ApacheCon Asia 2022 的分享。内容主要包括五个方面&#xff1a; 京东零售实时计算的现状实时计算框架场景优化&#xff1a;TopN场景优化&#xff1a;动线分析场景优化&#xff1a;FLINK 一站式机器学…

软件测试面试找工作你必须知道的面试技巧(帮助超过100人成功通过面试)

目录 问题一&#xff1a;“请你自我介绍一下” 问题二&#xff1a;“谈谈你的家庭情况” 问题三&#xff1a;“你有什么业余爱好?” 问题四&#xff1a;“你最崇拜谁?” 问题五&#xff1a;“你的座右铭是什么?” 问题六&#xff1a;“谈谈你的缺点” 问题七&#xff…

【React】React入门--生命周期

&#x1f380;个人主页&#xff1a;努力学习前端知识的小羊 感谢你们的支持&#xff1a;收藏&#x1f384; 点赞&#x1f36c; 加关注&#x1fa90; 文章目录React生命周期初始化阶段运行中阶段销毁阶段老生命周期的问题新生命周期代替性能优化的方案重要的勾子即将废弃的勾子R…

Qt之QPainter绘制多个矩形/圆形(含源码+注释)

一、绘制示例图 下图绘制的是矩形对象&#xff0c;但是将绘制矩形函数&#xff08;drawRect&#xff09;更改为绘制圆形&#xff08;drawEllipse&#xff09;即可绘制圆形。 二、思路解释 绘制矩形需要自然要获取矩形数据&#xff0c;因此通过鼠标事件获取每个矩形的rect数…

“国产版ChatGPT”文心一言发布会现场Demo硬核复现

文章目录前言实验结果一、文学创作问题1 :《三体》的作者是哪里人&#xff1f;问题2&#xff1a;可以总结下三体的核心内容吗&#xff1f;如果要续写的话&#xff0c;可以从哪些角度出发&#xff1f;问题3&#xff1a;如何从哲学角度来进行续写&#xff1f;问题4&#xff1a;电…

学习28个案例总结

学习前 对于之前遇到的问题没有及时总结&#xff0c;导致做什么事情都是新的一样。没有把之前学习到接触到的内容应用上。通过这次对28个案例的学习。把之前遇到的问题总结成自己的经验&#xff0c;在以后的开发过程中避免踩重复性的坑。多看帮助少走弯路。 学习中 对28个案例…

2022-2023年度广东省职业院校学生专业技能大赛 中职组网络安全赛项竞赛规程

2022-2023年度广东省职业院校学生专业技能大赛 中职组网络安全赛项竞赛规程 一、赛项名称 赛项编号&#xff1a;Z27 赛项名称&#xff1a;网络安全赛项组别&#xff1a;中职 赛项归属&#xff1a;信息技术类 二、竞赛目的 为检验中职学校网络信息安全人才培养成效&#xff0c;促…

用chatgpt写insar地质灾害的论文,重复率只有1.8%,chatgpt4.0写论文不是梦

突发奇想&#xff0c;想用chatgpt写一篇论文&#xff0c;并看看查重率&#xff0c;结果很惊艳&#xff0c;说明是确实可行的&#xff0c;请看下图。 下面是完整的文字内容。 InSAR (Interferometric Synthetic Aperture Radar) 地质灾害监测技术是一种基于合成孔径雷达…

从零开始学Python第02课:第一个Python程序

在上一课中&#xff0c;我们对 Python 语言的过去现在有了一些了解&#xff0c;我们准备好了运行 Python 程序所需要的解释器环境。相信大家已经迫不及待的想开始自己的 Python 编程之旅了&#xff0c;但是新问题来了&#xff0c;我们应该在什么地方书写 Python 程序&#xff0…
最新文章