vue中如何使用echarts—实现折线图,柱形图切换

作者:有用网 阅读量:225 发布时间:2023-10-18
关键字 vue

前言:最重要的第一步:安装echarts

npm install echarts --save

其他安装方式请到echarts官网查看

一、引入折线图

利用ref获取div容器

1.先准备一个容器

<div id="chartLineBox1" style="width: 90%;height: 70vh;"> </div>

2.在mounted钩子函数中书写以下代码

let chartLine = echarts.init(document.getElementById('chartLineBox1'));

            // 指定图表的配置项和数据
            var option = {
                title:{
                  show:true,
                  text:'周屠宰量',
                  x:'center'
                },
                tooltip: {              //设置tip提示
                    trigger: 'axis'
                },
                legend: {               //设置区分(哪条线属于什么)
                    data:['2021年周屠宰量','2022年周屠宰量','2023年周屠宰量'],
                    bottom:'0'
                },
//切换折线图,柱形图,刷新等设置
                toolbox: {
                    show: true,
                    feature: {
                      mark : {                                 // '辅助线开关'
                            show: true
                        },
                        dataZoom: {
                            yAxisIndex: 'none'
                        }, //区域缩放,区域缩放还原
                        dataView: {
                            readOnly: false
                        }, //数据视图
                        magicType: {
                            type: ['line', 'bar']
                        },  //切换为折线图,切换为柱状图
                        restore: {},  //还原
                        saveAsImage: {}   //保存为图片
                    }
                },
                color: ['#8AE09F', '#FA6F53','#409EFF'],       //设置区分(每条线是什么颜色,和 legend 一一对应)
                xAxis: {                //设置x轴
                    type: 'category',
                    boundaryGap: false,     //坐标轴两边不留白
                    data: dataindex,
                    axisLine: {             //坐标轴轴线相关设置。
                        lineStyle: {
                            // color: '#FA6F53',
                        }
                    }
                },
                yAxis: {
                    name: '单位:元/公斤',
                    nameTextStyle: {
                        //  color: '#FA6F53',
                        fontSize: 16,
                        padding: [0, 0, 10, 0]
                    },
                    axisLine: {
                        lineStyle: {
                            //  color: '#FA6F53',
                        }
                    },
                    type: 'value'
                },
                series: [
                    {
                    name: '2021年周屠宰量',
                    data:  tzl1_numData,
                    type: 'line',               // 类型为折线图
                    symbol:'circle',
                    symbolSize:10,
                    lineStyle: {                // 线条样式 => 必须使用normal属性
                        normal: {
                            color: '#8AE09F',
                        }
                    },
                    },
                    {
                    name: '2022年周屠宰量',
                    data: tzl2_numData,
                    type: 'line',
                    symbol: 'triangle',  // 数据级个性化拐点图形 rect矩形
                    symbolSize : 10,
                    lineStyle: {
                        normal: {
                            color: '#FA6F53',
                        }
                    },
                    },
                    {
                    name: '2023年周屠宰量',
                    data: tzl3_numData,
                    type: 'line',
                    symbol: 'rect',
                    symbolSize : 10,
                    lineStyle: {
                        normal: {
                            color: '#409EFF',
                        }
                    },
                    }
                ]
            };

            // 清空画布
            chartLine.clear();
            // 使用刚指定的配置项和数据显示图表。
            chartLine.setOption(option);

3.部分说明

axisLabel 可以设置x、y轴刻度上文本的样式,如大小、颜色、字体样式;

boundaryGap 是两侧留白,决定着文字是否在刻度中间还是在刻度正下方;

利用 id 获取容器



二、把折线图拐点设置成图片样式

1.先引入图片

import chart_circle from '../../assets/images/section_right/chart_circle.png';

2.然后定义变量(如果在另一个文件定义这个变量,要记得使用export default 导出)

const chartCircle = 'image://' + chart_circle;

3.最后使用变量

symbol: chartCircle

效果展示:

参考文章

https://blog.csdn.net/yue31313/article/details/122453241

三、给折线图设置背景颜色

1.单一背景色

markArea 里的 itemStyle 属性,如果需要分别设置颜色就将itemStyle属性写到markArea下对应data里

2.渐变背景色

(1)给data里所有选中区域设置背景颜色


效果如下


(2)分别给每一块区域设置背景颜色


代码如下:

 series: [
            {
              name: 'Electricity',
              type: 'line',
              smooth: true,
              // prettier-ignore
              data: [300, 280, 250, 260, 270, 300, 550, 500, 400, 390, 380, 390, 400, 500, 600, 750, 800, 700, 600, 400],
              markArea: {
                data: [
                  [
                    {
                      itemStyle: {
                            color: {
                              type: 'linear',
                              x: 1,//右
                              y: 0,//下
                              x2: 0,//左
                              y2: 0,//上
                              colorStops: [{
                                offset: 0, color: 'red' // 0% 处的颜色
                              }, {
                                offset: 1, color: 'blue' // 100% 处的颜色
                              }],
                              global: false // 缺省为 false
                            }
                          },
                      name: 'Morning Peak',
                      xAxis: '07:30'
                    },
                    {
                      xAxis: '10:00'
                    }
                  ],
                  [
                    {
                      itemStyle: {
                            color: {
                              type: 'linear',
                              x: 0,//右
                              y: 1,//下
                              x2: 0,//左
                              y2: 0,//上
                              colorStops: [{
                                offset: 0, color: 'red' // 0% 处的颜色
                              }, {
                                offset: 1, color: 'rgba(0, 0, 0, 0.8)' // 100% 处的颜色
                              }],
                              global: false // 缺省为 false
                            }
                          },
                      name: 'Evening Peak',
                      xAxis: '17:30'
                    },
                    {
                      xAxis: '21:15'
                    }
                  ]
                ]
              }
            }
          ]

四、补充内容

由于整个页面进行了zoom:0.5缩放,导致折线图点击事件出现问题。

只需要在折线图所在div书写zoom:2,并且把所有数据都缩小两倍(宽高、具体配置项等)



#发表评论
提交评论