当前位置:   article > 正文

vue项目里使用ECharts图表后台返回图表数据_vue echarts 饼状图需要后端返回什么

vue echarts 饼状图需要后端返回什么

最近项目里面要使用到图标,感觉ECharts挺不错,就添加到项目里了,图标数据是后台返回的.

1.vue引入echarts

npm install echarts -S (导入方法有很多,根据需要自行选择)

2.main.js全局引用

import ECharts from 'echarts'
Vue.prototype.echarts=ECharts;
Vue.use(ECharts);
  • 1
  • 2
  • 3

3.在具体文件中使用

<template>
    <section class="section">
        <Breadcrumb>
            <BreadcrumbItem>首页</BreadcrumbItem>
        </Breadcrumb>
        <Divider/>
        <div id="main" style="width:600px;height:400px;">
        </div>
    </section>
</template>
<script>
    export default {
        data() {
            return {
             
            }
        },
        mounted() {
            this.charts();
        },
        methods: {
            charts(){
               let chart=this.echarts.init(document.getElementById('main'));
                //ajax请求接口获取数据
                this.Axios({
                    url: '你自己的后台接口地址',
                    params: _params,
                }).then(response => {
                    var res = response.data;
                    if (res && res.code === '0') {
                        chart.setOption(res);
                    } else {
                        this.$Message.error(res.msg);
                    }
                }, error => {
                    if (error.response) {
                        const _result = error.response.data;
                        this.$Message.error(_result.msg);
                    } else {
                        this.$Message.error('操作异常,请检查网络!');
                    }
                });
            } ,
        },
        components: {}
    }
</script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

4.后台代码

封装了一个EChartsOptionUtil工具类

package cn.rocketai.saas.common.util;

import com.github.abel533.echarts.axis.AxisTick;
import com.github.abel533.echarts.axis.CategoryAxis;
import com.github.abel533.echarts.code.*;
import com.github.abel533.echarts.feature.DataView;
import com.github.abel533.echarts.feature.MagicType;
import com.github.abel533.echarts.feature.Mark;
import com.github.abel533.echarts.json.GsonOption;
import com.github.abel533.echarts.series.Bar;
import com.github.abel533.echarts.series.Pie;
import com.github.abel533.echarts.style.ItemStyle;
import com.github.abel533.echarts.style.LineStyle;
import com.github.abel533.echarts.style.itemstyle.Normal;

import java.util.HashMap;
import java.util.Map;

/** ECharts图表工具类 Author: dengWenBo Date: 19-1-16 */
public class EChartsOptionUtil {

  /**
   * 生成柱状图的Option
   *
   * @param xValue X轴的值
   * @param yValue Y轴的值
   * @param title 标题
   * @param legend 图例(单位)
   * @param xName
   * @param yName
   * @return
   */
  public static GsonOption getBarGraphOption(
      Object[] xValue, Object[] yValue, String title, String legend, String xName, String yName) {

    GsonOption option = new GsonOption();

    if (title != null) {
      option.title(title); // 标题
    }
    // 工具栏
    option
        .toolbox()
        .show(true)
        .feature(
            Tool.mark, // 辅助线
            new DataView().show(true).readOnly(true), // 数据视图 Tool.dataView
            new MagicType(Magic.line, Magic.bar), // 线图、柱状图切换
            Tool.restore, // 还原
            Tool.saveAsImage); // 保存为图片
    option
        .tooltip()
        .show(true)
        .trigger(Trigger.axis)
        .formatter("{a} <br/>{b} : {c}"); // 显示工具提示,设置提示格式

    if (legend != null) {
      option.legend(legend); // 图例
    }

    // x轴
    CategoryAxis xCategory = new CategoryAxis();
    // x轴数据配置 500 x宽度
    xCategory.data(xValue).boundaryGap(true).name(xName).nameGap(500).type();
    // 如果x轴数据过多者隔一个显示interval(1)隔一个显示rotate(30)倾斜度
    if (xValue.length > 10) {
      xCategory.axisLabel().position("end").interval(1).rotate(0);
    } else {
      xCategory.axisLabel().position("end").interval(0).rotate(0);
    }
    xCategory.splitLine().show(true).lineStyle(new LineStyle().type(LineType.dashed));
    xCategory.axisTick(new AxisTick().show(true).inside(true));
    option.xAxis(xCategory);

    // y轴
    // yAxis[{name : '区域销量',nameLocation : 'end',nameGap : 20,type : 'value'}],

    CategoryAxis yCategory = new CategoryAxis();
    yCategory.name(yName).type(AxisType.value).position("end");
    yCategory.splitLine().show(true).lineStyle(new LineStyle().type(LineType.dashed));
    option.yAxis(yCategory);
    // 图类别(柱状图)
    Bar bar = new Bar();
    // 循环数据
    for (int i = 0; i < xValue.length; i++) {
      // 类目对应的柱状图
      Map<String, Object> map = new HashMap<String, Object>();
      map.put("value", yValue[i]);
      map.put("itemStyle", new ItemStyle().normal(new Normal().color("#01B9D4"))); // 图形颜色
      // map.put("barWidth", 20); // 柱状图的宽度 如果数据过少设置宽度为20
      // map.put("barMaxWidth", 20);
      bar.data(map);
    }
    bar.name(legend);
    if (xValue.length < 3) {
      // 设置柱状图 宽度
      bar.barWidth(100);
    }
    option.series(bar);
    return option;
  }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103

根据需求写实现类

public Option ageData(User currUser) {
    // 年龄段0-15,16-25,26-35,36-45,大于46
    List<String> ageFifteen = dataAnalysisMapper.selectByAge(currUser.getId(), "0~15岁");
    List<String> ageTwenty = dataAnalysisMapper.selectByAge(currUser.getId(), "16~25岁");
    List<String> ageThirty = dataAnalysisMapper.selectByAge(currUser.getId(), "26~35岁");
    List<String> ageForty = dataAnalysisMapper.selectByAge(currUser.getId(), "35~45岁");
    List<String> overFort = dataAnalysisMapper.selectByAge(currUser.getId(), "⼤于46岁");
    List<Object> x = new ArrayList<>();
    x.add("0~15岁");
    x.add("16~25岁");
    x.add("26~35岁");
    x.add("35~45岁");
    x.add("⼤于46岁");
    Object[] xObject = x.toArray(new Object[0]);
    List<Object> y = new ArrayList<>();
    y.add(String.valueOf(ageFifteen.size()));
    y.add(String.valueOf(ageTwenty.size()));
    y.add(String.valueOf(ageThirty.size()));
    y.add(String.valueOf(ageForty.size()));
    y.add(String.valueOf(overFort.size()));
    Object[] yObject = y.toArray(new Object[0]);
    return getOption(xObject, yObject, "年龄段", "年龄段");
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

最后把数据返回前台(最后的数据需要toString() )

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/108827
推荐阅读