Vue项目中使用highcharts-折线图(配置)

Vue项目中使用highcharts-折线图(配置)

效果图:
在这里插入图片描述

  1. 封装lineChart组件
<template>
    <div class="chart">
        <div :id="id" class="chart-common" :data="data"></div>
    </div>
</template>

<script>
    import HighCharts from 'highcharts'
    export default {
        name: "chart",
        // 传入id: 若一个页面出现多个折线图时,id必须不同
        // data: 折线图配置数据
        props: ['id','data'],
        data() {
            return {
            }
        },
        created() {
        },
        mounted() {
            HighCharts.chart(this.id, this.data);
        }
    }
</script>

<style scoped lang="less">
    .chart {
        width: 100%;
        margin-top: 10px;
        .chart-common {
            height: 300px;
            border: 1px solid #e8eaec;
            padding: 3px;
            border-radius: 4px;
            transition: all 0.2s ease-in-out;
            &:hover {
                box-shadow: 0 1px 6px rgba(0, 0, 0, 0.2);
                border-color: #eee;
            }
        }
    }
</style>
  1. vue页面文件中引用lineChart
// 1
import lineChart from './common/lineChart';
import { diskReadWriteNum } from "./access/chartsData";   // 折线图静态配置文件,放在一chartData.js中,防止代码冗余
// 2
components: {
    lineChart
}
// 3
<lineChart :id="chartId" :data="alarmtresChartData"></lineChart>
chartId: 'char-id',
alarmtresChartData:  Object.assign(diskReadWriteNum)  // 深拷贝一份
// 4 数据请求成功 只需要关注a、b、c即可
this.$request(config).then(({data: res}) => {
    if (res.success) {
    	
        let dateList = [];  // x轴数据
        let alarmNumList = [];  // 报警Y轴
        let earlyNumList = [];  // 预警Y轴
        
        if(type === 'alarm') {
            // 报警
            res.data.forEach(item => {
                let date = this.timestampToTimeLong(item.timestamp);
                dateList.push(date);
                alarmNumList.push(item.count);
            })
            // a
            this.alarmtresChartData.series[0].data = alarmNumList;
        } else {
            // 预警
            res.data.forEach(item => {
                let date = this.timestampToTimeLong(item.timestamp);
                dateList.push(date);
                earlyNumList.push(item.count);
            })
            // b
            this.alarmtresChartData.series[1].data = earlyNumList;
        }
        // c
        this.alarmtresChartData.xAxis.categories = dateList;
        // d 重新刷新div
        this.isReloadChart = false;  // 这里见我另一篇文章,vue强制刷新某一个div
        this.$nextTick(() => {
            this.isReloadChart = true;
        })
    }
});
  1. lineChart配置文件chartsData.js
const diskReadWriteNum = {
    credits: {
        enabled: false // 禁用版权信息
    },
    // 标题
    title: {
        useHTML: true,
        text: '<div style="font-weight: 700">' + window.i18nTool.$t('预警/报警个数趋势图')
            + '<span style="color: #999999">(' + window.i18nTool.$t('个') + ')</span></div>',
        align: 'left',
        // 水平对齐方式
        style: {
            fontSize: '12px',
            'font-weight': 700
        }
    },
    // 副标题
    subtitle: {
        text: ''
    },
    // X轴
    xAxis: {
        title: {
            text: ''
        },
        // 数据项
        categories: ['12:00:00', '13:10:00', '14:20:00', '15:30:00', '16:40:00', '17:50:00', '18:60:00', '19:70:00']
        // time = Date.UTC(2013,11,14,0,0,0,0);  // UTC格式时间戳
    },
    // Y轴
    yAxis: {
        title: {
            text: ''
        }
    },
    // 数据列
    series: [{
        name: window.i18nTool.$t('预警个数'),
        color: '#2d8cf0',
        data: [12, 34, 23, 35, 47, 32, 12, 19],
        lineWidth: 1, // 线宽
        cursor: 'pointer', // 鼠标样式
        dashStyle: 'Solid' // 线条样式
    }, {
        name: window.i18nTool.$t('报警个数'),
        color: '#5f299a',
        data: [8, 12, 69, 60, 17, 22, 59, 36],
        lineWidth: 1, // 线宽
        cursor: 'pointer', // 鼠标样式
        dashStyle: 'Solid', // 线条样式
        type: 'spline'   // 线条平滑
    }],
    // 数据列配置 每条折现以不同图标显示(三角形、圆形等) 折现数据上的数据点
    plotOptions: {
        series: {
            marker: {
                radius: 1, // 大小
                enabled: true,  // 为true时,自定义显示 下方label无效
                states: {
                    // 状态
                    hover: {
                        radius: 2,
                        lineWidthPlus: 1
                    }
                }
            },
            // 使用label需去除marke属性
            // label: {
            //     connectorAllowed: true
            // }
            // pointStart: 2010  // 如果没有为数据列中提供x值,则pointStart定义要开始的值。
        }
    },
    // 图例(折线数据名字)
    legend: {
        itemStyle: {
            fontWeight: 400
        }
    },
    tooltip: {
        shared: true,   // 鼠标滑过是否显示全部数据
        crosshairs: false,  // true:鼠标滑过,为长方形背景
        // axisPointer: {
        //     type: 'cross'
        // },
        // 配置鼠标划过时标示线
        crosshairs: [
            // 横向标示线
            {
                width: 1,
                color: '#ccc'
            },
            // 纵向标示线
            // {
            //     width: 1,
            //     color: 'green'
            // }
        ],
        // 时间格式化字符 默认会根据当前的数据点间隔取对应的值 当前图表中数据点间隔为 1天,所以配置 day 值即可
        // dateTimeLabelFormats: {
        //     day: '%Y-%m-%d'
        // }
    },
    // 响应式
    // responsive: {
    //     rules: [{
    //         // 响应条件
    //         condition: {
    //         },
    //         // 图表配置
    //         chartOptions: {
    //         }
    //     }]
    // }

};

module.exports = {
    diskReadWriteNum
};
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3引入Highcharts,你可以按照以下步骤进行操作: 1. 首先,你需要在项目安装Highcharts。可以使用npm来安装Highcharts,运行以下命令: ``` $ npm install highcharts --save ``` 2. 在Vue组件引入Highcharts库。你可以使用以下代码来导入Highcharts库: ``` import Highcharts from "highcharts/highstock"; import HighchartsMore from "highcharts/highcharts-more"; HighchartsMore(Highcharts); ``` 3. 现在,你就可以在Vue组件使用Highcharts来创建各种图表,如饼图、柱状图、折线图等基础图例了。 请注意,上述步骤的代码是基于Vue3和npm安装的情况下,具体的引入方式可能会因项目的不同而有所差异。同时,你还可以参考Highcharts官方网站上的Highcharts Vue文档,了解更多关于HighchartsVue使用方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [vue3 | HighCharts实战自定义封装之径向条形图](https://blog.csdn.net/weixin_42974827/article/details/126874979)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [在vue项目引入highcharts图表](https://blog.csdn.net/djh052900/article/details/124916098)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值