florazeng

仪表盘的样式如下:

 

 

 是双表盘展示

 

 

 

 

 

 左边的图中minorTickInterval的值为null,右边的minorTickInterval的值为“auto

 

 

  左边的图中lineColor的值为‘#f00’,右边的lineColor的值为“transparent

yAxis: [{
    min: 0,
    // 最小刻度值
    max: 100,
    // 最大刻度值
    minorTickInterval: \'auto\',
    // 表盘中比较短的刻度值
    minorTickWidth: that.torem(2),
    // 表盘中比较短的刻度值的宽度
    minorTickLength: that.torem(20),
    // 表盘中比较短的刻度值的长度
    minorTickPosition: \'inside\',
    // 表盘中比较短的刻度值在内部还是在外部显示
    minorTickColor: \'#00bfd3\',
    // 表盘中比较短的刻度值的颜色
    tickPixelInterval: \'auto\',
    // 表盘中比较长的刻度值
    tickWidth: that.torem(4),
    // 表盘中比较长的刻度值的宽度
    tickPosition: \'inside\',
    // 表盘中比较长的刻度值在内部还是在外部显示
    tickLength: that.torem(26),
    // 表盘中比较长的刻度值的长度
    tickColor: \'#48c7ff\',
    // 表盘中比较长的刻度值的颜色
    tickInterval: 10,
    // 间隔
    lineColor: \'transparent\',
    // 表盘最外层的连接线
}]

 

 

 

labels: {
    style: { // 刻度值数字的样式
        color: \'#f00\',
        fontSize: that.torem(28)
        // step: 20
    },
    distance: that.offetY
},

 y轴的一些设置

yAxis: [{
    min: 0,
    // 最小刻度值
    max: 100,
    // 最大刻度值
    minorTickInterval: \'auto\',
    // 表盘中比较短的刻度值
    minorTickWidth: that.torem(2),
    // 表盘中比较短的刻度值的宽度
    minorTickLength: that.torem(20),
    // 表盘中比较短的刻度值的长度
    minorTickPosition: \'inside\',
    // 表盘中比较短的刻度值在内部还是在外部显示
    minorTickColor: \'#00bfd3\',
    // 表盘中比较短的刻度值的颜色
    tickPixelInterval: \'auto\',
    // 表盘中比较长的刻度值
    tickWidth: that.torem(4),
    // 表盘中比较长的刻度值的宽度
    tickPosition: \'inside\',
    // 表盘中比较长的刻度值在内部还是在外部显示
    tickLength: that.torem(26),
    // 表盘中比较长的刻度值的长度
    tickColor: \'#48c7ff\',
    // 表盘中比较长的刻度值的颜色
    tickInterval: 10,
    // 间隔
    lineColor: \'transparent\',
    // 表盘最外层的连接线
    labels: {
        style: { // 刻度值数字的颜色
            color: \'#48c7ff\',
            fontSize: that.torem(28)
            // step: 20
        },
        distance: that.offetY
    },
    pane: 0,
    // 第一个面板,第二个面板是1
    title: { // 描述文字
        text: this.text1,
        verticalAlign: \'bottom\',
        style: {
            color: \'#fff\',
            fontSize: that.torem(28)
        },
        y: that.torem(220) // 离y轴的距离
    }
}, {
    min: 0,
    max: 100,
    minorTickInterval: \'auto\',
    minorTickWidth: that.torem(2),
    minorTickLength: that.torem(20),
    minorTickPosition: \'inside\',
    minorTickColor: \'#00bfd3\',
    tickPixelInterval: 30,
    tickWidth: that.torem(4),
    tickPosition: \'inside\',
    tickLength: that.torem(26),
    tickColor: \'#48c7ff\',
    tickInterval: 10,
    // 间隔
    tickmarkPlacement: \'on\',
    lineColor: \'transparent\',
    labels: {
        style: {
            color: \'#48c7ff\',
            fontSize: that.torem(28)
        },
        distance: that.offetY
    },
    pane: 1,
    title: {
        text: this.text2,
        verticalAlign: \'bottom\',
        style: {
            color: \'#fff\',
            fontSize: that.torem(28)
        },
        y: that.torem(220)
    }
}],

指针以及表盘内百分比的显示的设置

plotOptions: {
    gauge: {
        dataLabels: {
            borderWidth: 0,
            enabled: true,
            color: \'#48c7ff\',
            fontSize: that.torem(80),
            format: ` <span> {y} % </span>`
        },
        dial: {
            radius: \'80%\', // 半径:指针长度
            backgroundColor: \'#1b4b77\',
            //指针背景色
            borderColor: \'black\',
            borderWidth: that.torem(1),
            baseWidth: that.torem(10),
            topWidth: that.torem(1),
            baseLength: \'90%\',
            // of radius
            rearLength: \'15%\' //尾巴长度
        },
        borderWidth: 0
    }
},

指针中的百分比值,也就是y轴的初始刻度值

series: [{// 第一个表盘对应的数据
    data: [80],
    yAxis: 0 
}, {// 第二个表盘对应的数据
    data: [70],
    yAxis: 1
}]

 完整的代码

<template>
  <div class="highcharts-container" ref="chart_gauge"></div>
</template>

<script>
import Highcharts from \'highcharts/highstock\';
import HighchartsMore from \'highcharts/highcharts-more\';
import HighchartsDrilldown from \'highcharts/modules/drilldown\';
import Highcharts3D from \'highcharts/highcharts-3d\';
HighchartsMore(Highcharts);
HighchartsDrilldown(Highcharts);
Highcharts3D(Highcharts);
import { font } from \'@/mixins\';

export default {
    props: [\'name\', \'title\'],
    name: \'highcharts\',
    mixins: [font],
    data() {
        return {
            chart1: null,
            data_terminal: [
                {
                    name: \'华为\',
                    y: 21.9
                },
                {
                    name: \'苹果\',
                    y: 14.9
                },
                {
                    name: \'三星\',
                    y: 15.2
                },
                {
                    name: \'小米\',
                    y: 25.7
                },
                {
                    name: \'其他\',
                    y: 35.7
                }
            ],
            data_flow: [
                {
                    name: \'热点1\',
                    y: 21.9
                },
                {
                    name: \'热点2\',
                    y: 14.9
                },
                {
                    name: \'热点3\',
                    y: 15.2
                },
                {
                    name: \'热点4\',
                    y: 25.7
                },
                {
                    name: \'其他\',
                    y: 35.7
                }
            ],
            options: null,
            chartTitle: \'\',
            text1: null,
            text2: null,
            standSize: document.body.clientWidth,
            offetY: 0
        };
    },
    watch: {
        standSize: {
            handler(newVal, oldVal) {
                if (newVal == 4000) {
                    this.offetY = this.torem(-70);
                } else {
                    this.offetY = this.torem(-60);
                }
            },
            deep: true,
            immediate: true
        }
    },
    mounted() {
        var that = this;
        that.$el.style.height = that.$refs.chart_gauge.offsetHeight - that.torem(100) + \'px\';
        console.log(this.$refs.chart_gauge.offsetHeight, \'qq\');
        switch (that.title) {
            case \'cpu\':
                that.text1 = \'AP平均cpu利用率\';
                that.text2 = \'AC平均cpu利用率\';
                break;
            case \'内存\':
                that.text1 = \'AP平均内存利用率\';
                that.text2 = \'AC平均内存利用率\';
                break;
        }
        this.options = {
            chart: {
                type: \'gauge\',
                backgroundColor: \'transparent\'
                // height: that.torem(500)
            },
            title: {
                text: null
            },
            labels: {
                items: [
                    {
                        style: { left: that.torem(180), top: that.torem(280), fontSize: that.torem(42), fontWeight: \'bold\', fontFamily: \'微软雅黑\' }
                        // html: \'<span style="color:#C02316">{y}</span>\'
                    }
                ]
            },
            pane: [
                // 表盘1设置
                {
                    startAngle: -100, // 表盘开始的角度
                    endAngle: 100, // 表盘结束的角度
                    background: null, // 表盘的背景颜色,为null的话就是不要背景颜色
                    center: [\'25%\', \'65%\'], // 表盘的位置
                    size: \'80%\' // 表盘的大小
                },
                // 表盘2设置
                {
                    startAngle: -100,
                    endAngle: 100,
                    background: null,
                    center: [\'75%\', \'65%\'],
                    size: \'80%\'
                }
            ],
            yAxis: [
                {
                    min: 0, // 最小刻度值
                    max: 100, // 最大刻度值
                    minorTickInterval: \'auto\', // 表盘中比较短的刻度值
                    minorTickWidth: that.torem(2), // 表盘中比较短的刻度值的宽度
                    minorTickLength: that.torem(20),// 表盘中比较短的刻度值的长度
                    minorTickPosition: \'inside\',// 表盘中比较短的刻度值在内部还是在外部显示
                    minorTickColor: \'#00bfd3\',// 表盘中比较短的刻度值的颜色
                    tickPixelInterval: \'auto\', // 表盘中比较长的刻度值
                    tickWidth: that.torem(4),// 表盘中比较长的刻度值的宽度
                    tickPosition: \'inside\',// 表盘中比较长的刻度值在内部还是在外部显示
                    tickLength: that.torem(26),// 表盘中比较长的刻度值的长度
                    tickColor: \'#48c7ff\',// 表盘中比较长的刻度值的颜色
                    tickInterval: 10, // 间隔
                    lineColor: \'transparent\',// 表盘最外层的连接线
                    labels: {
                        style: {// 刻度值数字的颜色
                            color: \'#48c7ff\', 
                            fontSize: that.torem(28)
                            // step: 20
                        },
                        distance: that.offetY
                    },
                    pane: 0, // 第一个面板,第二个面板是1
                    title: { // 描述文字
                        text: this.text1,
                        verticalAlign: \'bottom\',
                        style: {
                            color: \'#fff\',
                            fontSize: that.torem(28)
                        },
                        y: that.torem(220) // 离y轴的距离
                    }
                },
                {
                    min: 0,
                    max: 100,
                    minorTickInterval: \'auto\',
                    minorTickWidth: that.torem(2),
                    minorTickLength: that.torem(20),
                    minorTickPosition: \'inside\',
                    minorTickColor: \'#00bfd3\',
                    tickPixelInterval: 30,
                    tickWidth: that.torem(4),
                    tickPosition: \'inside\',
                    tickLength: that.torem(26),
                    tickColor: \'#48c7ff\',
                    tickInterval: 10, // 间隔
                    tickmarkPlacement: \'on\',
                    lineColor: \'transparent\',
                    labels: {
                        style: {
                            color: \'#48c7ff\',
                            fontSize: that.torem(28)
                        },
                        distance: that.offetY
                    },
                    pane: 1,
                    title: {
                        text: this.text2,
                        verticalAlign: \'bottom\',
                        style: {
                            color: \'#fff\',
                            fontSize: that.torem(28)
                        },
                        y: that.torem(220)
                    }
                }
            ],
            plotOptions: {
                gauge: {
                    dataLabels: {
                        borderWidth: 0,
                        enabled: true,
                        color: \'#48c7ff\',
                        fontSize: that.torem(80),
                        format: `<span>{y}%</span>`
                    },
                    dial: {
                        radius: \'80%\', // 半径:指针长度
                        backgroundColor: \'#1b4b77\', //指针背景色
                        borderColor: \'black\',
                        borderWidth: that.torem(1),
                        baseWidth: that.torem(10),
                        topWidth: that.torem(1),
                        baseLength: \'90%\', // of radius
                        rearLength: \'15%\' //尾巴长度
                    },
                    borderWidth: 0
                }
            },
            series: [
                {
                    data: [80],
                    yAxis: 0
                },
                {
                    data: [70],
                    yAxis: 1
                }
            ]
        };
        this.initChart();
    },
    methods: {
        initChart(options) {
            this.chart1 = new Highcharts.Chart(this.$refs.chart_gauge, this.options);
            var title_AP_cpu = {
                text: \'AP平均cpu利用率\'
            };
            var title_AC_cpu = {
                text: \'AC平均cpu利用率\'
            };
            var title_AP_RAM = {
                text: \'AP平均内存利用率\'
            };
            var title_AC_RAM = {
                text: \'AC平均内存利用率\'
            };
        }
    }
};
</script>

<style lang="scss">
// .highcharts-container {
// width: 100%;
// height: calc(100% - 30px);
// display: flex;
// & > div {
//     flex: 1;
// }
.highcharts-credits {
    display: none !important;
}
.highcharts-text-outline {
    // 去掉dataLabels的outline
    display: none;
}
.redColor {
    color: #ff6748;
}
.blueColor {
    color: #48c7ff;
}
.greenColor {
    color: #13c792;
}
// }
</style>

  

分类:

技术点:

相关文章: