功率因数cosφ仪表盘
一、截图

二、说明
本篇博客主要是有三个亮点:
① 刻度标注在仪表盘标线外
② 仪表盘存在两个刻度值,分别是(正)0.5~1 和(负)-1~-0.5
③ 仪表盘内标注,分别是“超前”和“滞后”
三、代码
html代码
<nz-card style="position:absolute;width: 100%;height: 200px;background-color: #0e0b2a;border: solid 0px #0e0b2a;margin-top: 10px;color: white;padding: 0px;margin: 0px;" >
<p style="padding: 3px 10px;color: #8cc5fe;">{{title}}</p>
<div echarts [options]="option1" style="position: relative;left: 30px;/* height: 100%; */-webkit-tap-highlight-color: transparent;user-select: none;max-height: 180px;overflow-y: hidden;top: 0px;width: 100%;overflow-x: hidden;" class="demo-chart"></div>
</nz-card>
ts代码
import { Component, OnInit, Input, SimpleChanges } from '@angular/core';
import * as echarts from 'echarts';
import { EChartOption } from 'echarts';
@Component({
selector: 'app-powerfactor',
templateUrl: './powerfactor.component.html',
styleUrls: ['./powerfactor.component.css']
})
export class PowerfactorComponent implements OnInit {
@Input() title;
@Input() newpower ;
@Input() min;
@Input() max;
@Input() splitNumber;
public option1:EChartOption ;
constructor() {
}
ngOnInit() {
this.setPowerData();
}
ngOnChanges(changes: SimpleChanges): void {
if(parseFloat(this.newpower) >0.5){
this.newpower = -this.newpower;
}else{
//Do-nothing
}
this.setPowerData();
}
//处理功率因数数据
producePowerData(sign){
const _self=this;
if((sign == 0) && (_self.newpower) && (parseFloat(_self.newpower)<0 )){
return _self.newpower;
}else if((sign == 1) && (_self.newpower) && (parseFloat(_self.newpower)>0 )){
return _self.newpower;
}else{
return 0;
}
}
//处理显示指针
producePowerPointer(sign){
//sign,0代表'滞后',1代表'超前'
const _self = this;
if((sign == 0) && (parseFloat(_self.newpower) < 0)){
return true;
}else if((sign == 1) && (parseFloat(_self.newpower) > 0)){
return true;
}else{
return false;
}
}
//绘图函数
setPowerData(){
let powerdata = 0;
if("--" == this.newpower){
powerdata = 0;
}else{
powerdata = this.newpower;
}
this.option1 = {
series: [
//滞后表盘样式
{
type: "gauge",
center:["35%", "45%"], // 仪表位置 ,左右,上下
radius: "54%", //仪表大小
startAngle: -270, //开始角度
endAngle: -360, //结束角度
min:-1,
max:-0.5,
splitNumber:5,
axisLine: {
show: true,
lineStyle: { // 属性lineStyle控制线条样式
color: [
[0.02,'#f68d26'], // 100% 处的颜色
[1, '#3838d2'],
],
width: 12
},
},
splitLine: {
show: true,
lineStyle:{
opacity :0,
}
},
axisTick: {
show: false
},
axisLabel: {
show: true,
distance: -20,
color: '#333',
formatter: function(v){
switch (v+''){
case '-0.5': return '';
case '-0.6': return '';
case '-0.7': return '滞后';
case '-0.8': return '';
case '-0.9': return '';
case '1': return '';
default: return '';
}
},
},
itemStyle :{
color :'black'
},
pointer : { //指针样式
show:false,
length: '80%',
width :10,
itemStyle :{
color :'black'
}
},
detail: {
show: false
}
},
//超前表盘样式
{
type: "gauge",
center:["35%", "45%"], // 仪表位置 ,左右,上下
radius: "54%", //仪表大小
startAngle: -180, //开始角度
endAngle: -270, //结束角度
min:0.5,
max:1,
splitNumber:5,
axisLine: {
show: true,
lineStyle: { // 属性lineStyle控制线条样式
color: [
[0.98,'#22a0f3'], // 100% 处的颜色
[1, '#f68d26'],
],
width: 12,
},
},
splitLine: {
show: true,
lineStyle:{
opacity :0,
}
},
axisTick: {
show: false
},
axisLabel: {
show: true,
distance: -20,
color: '#22a0f3',
formatter: function(v){
switch (v+''){
case '0.5': return '';
case '0.6': return '';
case '0.7': return '超前';
case '0.8': return '';
case '0.9': return '';
case '1': return '';
default: return '';
}
},
},
itemStyle :{
color :'black'
},
pointer : { //指针样式
show:false,
length: '80%',
width :10,
itemStyle :{
color :'black'
}
},
detail: {
show: false
}
},
{
type : "gauge",
center:["35%", "45%"], // 默认全局居中
radius : "86%",
startAngle: -270, //开始角度
endAngle: -360, //结束角度
min:-1,
max:-0.5,
splitNumber:5,
axisLine : {
show : false,
lineStyle : {
color:[ [0.02,'#f68d26'],[1,'#3740d5']],
width : 0
}
},
splitLine : {
show:false,
length : 30,
lineStyle : {
width : 2
}
},
axisTick : { //刻度线样式(及短线样式)
length : 20,
show:false,
},
axisLabel : { //文字样式(及“10”、“20”等文字样式)
color : "#405a74",
distance : -26, //文字离表盘的距离
fontSize:12,
formatter: function(v){
switch (v+''){
case '-0.5': return '0.5';
case '-0.6': return '';
case '-0.7': return '0.7';
case '-0.8': return '';
case '-0.9': return '0.9';
case '-1': return '1';
default: return '';
}
},
},
itemStyle :{
color :'#13b4eb'
},
pointer : { //指针样式
show: this.producePowerPointer(0),
length: '36%',
width :4,
},
detail: {
show:this.producePowerPointer(0),
formatter:'{value}',
offsetCenter: [0, "36%"],
height:30,
textStyle: { // 其余属性默认使用全局文本样式,详见TEXTSTYLE
color: '#13b4eb',
fontSize : 26
},
},
data: [{
value:this.producePowerData(0),
// value: this.produceNegativePowerData(),
label: {
textStyle: {
fontSize: 12
}
}
}]
},
{
type : "gauge",
center:["35%", "45%"], // 默认全局居中
radius : "86%",
startAngle: -180, //开始角度
endAngle: -270, //结束角度
min:0.5,
max:1,
splitNumber:5,
axisLine : {
show : false,
lineStyle : { // 属性lineStyle控制线条样式
color:[ [0.98,'#3740d5'],[1,'#f68d26']],
width : 0//表盘宽度
}
},
splitLine : { //分割线样式(及10、20等长线样式)
show:false,
length : 30,
lineStyle : { // 属性lineStyle控制线条样式
width : 2
}
},
axisTick : { //刻度线样式(及短线样式)
length : 20,
show:false,
},
axisLabel : { //文字样式(及“10”、“20”等文字样式)
color : "#405a74",
distance : -26, //文字离表盘的距离
fontSize:12,
formatter: function(v){
switch (v+''){
case '0.5': return '0.5';
case '0.6': return '';
case '0.7': return '0.7';
case '0.8': return '';
case '0.9': return '0.9';
case '1': return '1';
default: return '';
}
},
},
itemStyle :{
color :'#13b4eb',
fontSize:12
},
pointer : { //指针样式
show:this.producePowerPointer(1),
length: '36%',
width :4,
},
detail: {
show:this.producePowerPointer(1),
formatter:'{value}',
offsetCenter: [0, "36%"],
height:30,
textStyle: { // 其余属性默认使用全局文本样式,详见TEXTSTYLE
color: '#13b4eb',
fontSize : 26
},
},
data: [{
value:this.producePowerData(1),
label: {
textStyle: {
fontSize: 12
}
}
}]
}
]
};
}
//处理颜色百分比方法
processColorPercent(){
const _self = this;
if(_self.newpower && _self.max){
let c_percent = _self.newpower/_self.max;
return c_percent;
}else{
let c_percent = 0;
return c_percent;
}
}
}
功率因数cosφ仪表盘的更多相关文章
- 交流绕组 & 感应电机
交流绕组 1. 为什么整距线圈产生的电动势最大? 整距时, 一个线圈的两根有效导体边之间相差180电角度, 线圈的节距因数为1, 线圈产生的电动势为单根导体边产生电动势的2倍, 为最大 2. 三相交流 ...
- IOS自定义仪表盘
登录|注册 周海锋 的专栏 Objective-C/Cocos2d/Cocos2d-x/Php/JS 目录视图 摘要视图 订阅 2016软考项目经理实战班 学院周年礼-顶 ...
- WPF自定义控件(1)——仪表盘设计[1]
0.小叙闲言 又接手一个新的项目了,再来一次上位机开发.网上有很多控件库,做仪表盘(gauge)的也不少,功能也很强大,但是个人觉得库很臃肿,自己就计划动手来写一个控件库,一是为学习,二是为了项目.下 ...
- [ucgui] 仪表盘函数
/* 仪表盘 */ void DrawArcScale(void) { ; ; int i; ]; GUI_SetBkColor(GUI_WHITE); GUI_Clear(); GUI_SetPen ...
- C# GDI绘制仪表盘(纯代码实现)
纯代码实现GDI绘制仪表盘,效果在代码下面. public partial class HalfDashboardUc : UserControl { /// <summary> /// ...
- 数学还勉强管用,用代码还能画个canvas 仪表盘(含完整代码)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 没事用html5 canvas画一个仪表盘自用,自适应的哦
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C++制作电压表电流表仪表盘(vs2008)
Meter类 Meter.h #if !defined(AFX_METER_H__D5802279_6502_4453_BE21_58604877AD39__INCLUDED_) #define AF ...
- canvas仿芝麻信用分仪表盘
这是一个仿支付宝芝麻信用分的一个canvas,其实就是一个动画仪表盘. 首先, 上原图: 这个是在下支付宝上的截图,分低各位见笑了.然后看下我用canvas实现的效果图: <canvas id= ...
随机推荐
- 关于HttpClient,HttpURLConnection,OkHttp的用法
1 HttpClient入门实例 1.1发送get请求 /** * HttpClient发送get请求 * @param url 请求地址 * @return * @throws IOExceptio ...
- centos7图形界面
安装centOS7服务器版本,系统默认是不会安装GUI的图形界面程序,这个需要手动安装CentOS7 Gnome GUI包. 安装GUI包.开机自动启动图形界面.重启 # yum groupinsta ...
- 请找出至少一个由递推关系 a(i) = a(i – 1) + a(i – 2) 生成的数列,使得当 n 趋于 (√5+1)/2的数列
寻找前后两项比值趋于 (√5+1)/2的广义Fibonacci数列 找到了一个帖子:这个帖子 //待补充
- 2019-4-25 html学习笔记
一.概念 文本 用于储存和记录文字信息的载体 html 超文本标记语言(本质就是给文本增加语义 如<h1></h1>就是给文字添加一级标题的语义) 注:互联网三大基石 有 ...
- React中的“双向绑定”
概述 React并不是一个MVVM框架,其实它连一个框架都算不上,它只是一个库,但是react生态系统中的flux却是一个MVVM框架,所以我研究了一下flux官方实现中的"双向绑定&quo ...
- H5的Page Visibility API
概述 哈哈,又学了一个H5的API.今天突然对动态获取网页的选中状态很感兴趣,然后去查了下,发现真的有个API控制它--Page Visibility API.于是把学到的东西记录下来,供以后开发时参 ...
- 从github clone文件: Failed to receive SOCKS4 connect request ack.
安装了代理,能上网,也能从github上下载文件,就是无法从github上clone文件, 查了很久资料后,终于发现使用sudo可以解决问题.不过,不知道原因是什么? 比如:git clone htt ...
- scrapy 框架入门
运行流程 官网:https://docs.scrapy.org/en/latest/intro/overview.html 流程图如下: 组件 1.引擎(EGINE):负责控制系统所有组件之间的数据流 ...
- [Leetcode]827.使用回溯+标记解决最大人工岛问题
在二维地图上, 0代表海洋, 1代表陆地,我们最多只能将一格 0 海洋变成 1变成陆地. 进行填海之后,地图上最大的岛屿面积是多少?(上.下.左.右四个方向相连的 1 可形成岛屿) 示例 1: 输入: ...
- Windows下为 Eclipse 配置 C/C++ 编译环境(转)
1.Eclipse及CDT的安装 CDT的全称是C/C++ DevelopmentTools,CDT使得Eclipse能够支持C/C++的开发.直接下载 eclipse CDT 集成版 下载地址:ht ...