首页 > 其他分享 >SpringBoot+Vue+Echarts实现双柱体柱状图

SpringBoot+Vue+Echarts实现双柱体柱状图

时间:2023-03-24 15:36:18浏览次数:55  
标签:Vue SpringBoot weight 柱状图 typeData import com public name


场景

 

若依前后端分离版本地搭建开发环境并运行项目的教程:

若依前后端分离版手把手教你本地搭建环境并运行项目_BADAO_LIUMANG_QIZHI的博客-

在上面搭建架构的基础上,实现使用Echarts获取后台数据并显示双柱体的柱状图。

SpringBoot+Vue+Echarts实现双柱体柱状图_程序猿

这里有两个对象,每个对象都有身高和体重两个属性。

注:

博客:BADAO_LIUMANG_QIZHI的博客_霸道流氓气质_

关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

1、若依框架已经集成了Echarts不用再重复引进。

新建组件BarChart.vue

<template>
  <div :style="{ height: '200px', width: '400px' }" />
</template>

<script>
import echarts from "echarts";
import request from '@/utils/request'
require("echarts/theme/macarons"); // echarts theme

export default {
  name: "twoZhuBarChart",
  data() {
    return {
      typeData: [
            { product: "公众号", 体重: 43, 身高: 85 },
            { product: "霸道的程序猿", 体重: 43, 身高: 85 },
          ],
    };
  },
  created() {
    this.getList().then((response) => {
      this.typeData[0].体重=response.data[0].weight;
      this.typeData[0].身高=response.data[0].height;
      this.typeData[1].体重=response.data[1].weight;
      this.typeData[1].身高=response.data[1].height;
      this.initChart(this.typeData);
    });
  },
  methods: {
    getList() {
      return request({
        url: "/echarts/getTwoZhuData",
        method: "get",
      });
    },
    initChart(typeData) {
      this.chart = echarts.init(this.$el, "macarons");
      this.chart.setOption({
        tooltip: {
          trigger: "axis",
          axisPointer: {
            // 坐标轴指示器,坐标轴触发有效
            type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
          },
        },
        grid: {
          top: 10,
          left: "2%",
          right: "2%",
          bottom: "3%",
          containLabel: true,
        },
        legend: {
          //图例
          data: ["身高", "体重"],
        },
        xAxis: [
          {
            type: "category",
            data: ["公众号", "霸道的程序猿"],
            axisPointer: {
              type: "shadow",
            },
          },
        ],
        yAxis: [
          {
            type: "value",
            name: "单位:(kg/cm)",
            min: 0,
            max: 150,
            interval: 10,
            axisLabel: {
              formatter: "{value}",
            },
          },
        ],
        dataset: {
          source: typeData,
        },
        series: [
          {
            name: "身高",
            type: "bar",
            barWidth: "40%",
          },
          {
            name: "体重",
            type: "bar",
            barWidth: "40%",
          },
        ],
      });
    },
  },
};
</script>

要实现给柱状图赋值,需要设置数据源为类似

typeData: [
            { product: "公众号", 体重: 43, 身高: 85 },
            { product: "霸道的程序猿", 体重: 43, 身高: 85 },
          ],

的对象数组格式。

2、上面页面加载完之后调用后台接口,后台接口实现

package com.ruoyi.web.controller.system;

import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.system.domain.TwoZhuModel;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("/echarts")
public class EchartsController extends BaseController
{


    @GetMapping("/getTwoZhuData")
    public AjaxResult getTwoZhuData()  {

        List<TwoZhuModel> resultMap = new ArrayList<TwoZhuModel>();
        TwoZhuModel zhangsan=new TwoZhuModel();
        zhangsan.setName("公众号");
        zhangsan.setHeight(100);
        zhangsan.setWeight(50);

        TwoZhuModel lisi = new TwoZhuModel();
        lisi.setName("霸道的程序猿");
        lisi.setHeight(66);
        lisi.setWeight(25);

        resultMap.add(zhangsan);
        resultMap.add(lisi);

        return AjaxResult.success(resultMap);

    }

}

后台构造两个对象,每个对象有两个属性,对象实体声明

package com.ruoyi.system.domain;

import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

public class TwoZhuModel extends BaseEntity
{
    private String name;
    private int weight;
    private int height;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getWeight() {
        return weight;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }

    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }
}

标签:Vue,SpringBoot,weight,柱状图,typeData,import,com,public,name
From: https://blog.51cto.com/BADAOLIUMANGQZ/6147335

相关文章

  • SpringBoot+Vue+OpenOffice实现文档管理(文档上传、下载、在线预览)
    场景SpringBoot集成OpenOffice实现doc文档转html:SpringBoot集成OpenOffice实现doc文档转html_BADAO_LIUMANG_QIZHI的博客-在上面初步使用了OpenOffice之后,怎样实现文档管理,......
  • Vue+Openlayer使用Draw实现交互式绘制多边形并获取面积
    场景Vue+Openlayer使用Draw实现交互式绘制线段:Vue+Openlayer使用Draw实现交互式绘制线段_BADAO_LIUMANG_QIZHI的博客-在上面的基础上实现的交互式绘制线段,还可以实现绘制多......
  • Vue3+vite项目中如何动态导入并创建多个全局组件
    背景实际开发项目中,有些时候我们需要通过全局注册多个自定义组件,但是每个组件都导入一次,将会导致代码很冗余。实现方案customComponents/index.jsconstfiles=impor......
  • 【开发小记】vuex存储用户信息
    今天开发的过程中,遵循前人的经验对用户信息进行了存储。实现这个功能之后,我突然想到vuex本质是什么呢?它为什么要存在,以及它和浏览器的缓存的区别又是什么呢?(第三小节会给出......
  • Vue2响应式原理
    Vue.js基本上遵循MVVM(Model–View–ViewModel)架构模式,数据模型仅仅是普通的JavaScript对象。而当你修改它们时,视图会进行更新。本文讲解一下Vue响应式系统的底层细......
  • springboot应用瘦身
    1、将依赖的jar包存放到其他路径mvndependency:copy-dependencies-DoutputDirectory=lib_path-DincludeScope=runtime2、在pom文件添加插件属性属性<plugin><gr......
  • SpringBoot与Spring Cloud对应关系
    springBoot与springcloud版本对应关系https://start.spring.io/actuator/info   参考:https://zhuanlan.zhihu.com/p/556412488......
  • vue全家桶进阶之路2:JavaScript
    JavaScript(简称“JS”)是当前最流行、应用最广泛的客户端脚本语言,用来在网页中添加一些动态效果与交互功能,在Web开发领域有着举足轻重的地位。JavaScript与HTML和CSS......
  • vue全家桶进阶之路3:Node.js
    Node.js发布于2009年5月,由RyanDahl开发,是一个基于ChromeV8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型,让JavaScript运行在服务端的开发平台,它让......
  • vue-cli 初始化创建 vue2.9.6 项目路由守卫、封装axios、vuex
    阅读目录Vue如何封装Axios请求1安装axios2封装代码axios应用方式Vue中的路由守卫使用演示1全局守卫2组件级守卫3单个路由独享的守卫4官网整个路由守卫被触发流程的......