一、截图

  

二、说明

  本篇博客主要是有三个亮点:

    ① 刻度标注在仪表盘标线外

    ② 仪表盘存在两个刻度值,分别是(正)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. 交流绕组 & 感应电机

    交流绕组 1. 为什么整距线圈产生的电动势最大? 整距时, 一个线圈的两根有效导体边之间相差180电角度, 线圈的节距因数为1, 线圈产生的电动势为单根导体边产生电动势的2倍, 为最大 2. 三相交流 ...

  2. IOS自定义仪表盘

      登录|注册     周海锋 的专栏 Objective-C/Cocos2d/Cocos2d-x/Php/JS       目录视图 摘要视图 订阅 2016软考项目经理实战班    学院周年礼-顶 ...

  3. WPF自定义控件(1)——仪表盘设计[1]

    0.小叙闲言 又接手一个新的项目了,再来一次上位机开发.网上有很多控件库,做仪表盘(gauge)的也不少,功能也很强大,但是个人觉得库很臃肿,自己就计划动手来写一个控件库,一是为学习,二是为了项目.下 ...

  4. [ucgui] 仪表盘函数

    /* 仪表盘 */ void DrawArcScale(void) { ; ; int i; ]; GUI_SetBkColor(GUI_WHITE); GUI_Clear(); GUI_SetPen ...

  5. C# GDI绘制仪表盘(纯代码实现)

    纯代码实现GDI绘制仪表盘,效果在代码下面. public partial class HalfDashboardUc : UserControl { /// <summary> /// ...

  6. 数学还勉强管用,用代码还能画个canvas 仪表盘(含完整代码)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 没事用html5 canvas画一个仪表盘自用,自适应的哦

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. C++制作电压表电流表仪表盘(vs2008)

    Meter类 Meter.h #if !defined(AFX_METER_H__D5802279_6502_4453_BE21_58604877AD39__INCLUDED_) #define AF ...

  9. canvas仿芝麻信用分仪表盘

    这是一个仿支付宝芝麻信用分的一个canvas,其实就是一个动画仪表盘. 首先, 上原图: 这个是在下支付宝上的截图,分低各位见笑了.然后看下我用canvas实现的效果图: <canvas id= ...

随机推荐

  1. Codeforces Round #514 (Div. 2) B - Forgery

    这个题我一开始没思路,最后也没思路 2个小时一直没思路 本来还想解释题意的,写了半天发现解释的不是很清楚,你还是google翻译一下吧 这个题解法是这样的: 首先,给你图案里面有很多的点,每个点的周围 ...

  2. fork()函数、进程表示符、进程位置

    linux.centos6.5 fork()函数:作用于创建子进程.返回值有两个,一个是向父进程返回它的pid,一个是返回0: eg1: #include<stdio.h> #includ ...

  3. APK防护——Anti_Virtual App的思路和实现

    作者:HAI_i 原文来自:https://bbs.ichunqiu.com/thread-42982-1-1.html 0×00 前言 Virtual App是一个很强大的存在,破坏了Android ...

  4. 深入浅出TCP/IP协议

    目录 什么是网络协议? 谁来制定这个网络协议? TCI/IP协议 什么是socket? http协议属于应用层还是传输层? soap可以使用HTTP协议进行传输吗? 各层协议举例 什么是网络协议? 话 ...

  5. celery异步认知

    celery是异步任务的框架 是由python实现的异步框架. 在使用celery我们经常分为三个部分, 第一部分就是我们所说的客户端, 就是发起异步任务的一方, 第二部分 任务队列 broker 第 ...

  6. ubuntu下TFTP Server 的安装和使用方法

    tftp是一种于1981年在RFC 783中定义的简化的文件传输协议(FTP).小型文件传输协议非常简单,通过少量存储器就能轻松实现 ——这在当时是很重要的考虑因素.所以TFTP被用于引导计算机,例如 ...

  7. js按钮 防重复提交

    给html 按钮加id属性   例: <button id="addBtn"  onclinck="check()">  </button&g ...

  8. 21天打造分布式爬虫-requests库(二)

    2.1.get请求 简单使用 import requests response = requests.get("https://www.baidu.com/") #text返回的是 ...

  9. an error occurred attempting install_Github_for_windows_无法安装的解决方法_

    都在这了,作者原创.我就截图好了.

  10. Android应用系列:手把手教你做一个小米通讯录(附图附源码)

    前言 最近心血来潮,突然想搞点仿制品玩玩,很不幸小米成为我苦逼的第一个试验品.既然雷布斯的MIUI挺受欢迎的(本人就是其的屌丝用户),所以就拿其中的一些小功能做一些小demo来玩玩.小米的通讯录大家估 ...