栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot纯后台生成Echarts图片(二)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot纯后台生成Echarts图片(二)

  

SpringBoot纯后台生成Echarts图片(一)

紧接 SpringBoot纯后台生成Echarts图片(一),在这篇的基础上,来生成折线图

一. 项目工程结构

二.项目依赖说明

项目的pom.xml配置,属性配置 见第一篇

三.项目代码说明

(1)echarts-pojo模块(数据模型)LinesData.java  

package com.lhf.springboot.echarts.pojo;


public class LinesData {

      private String title;

    private LineParam lineParam;

    private boolean isHorizontal = true;

    //省略get/set方法
}


(2)echarts-pojo模块(数据模型)LineParam.java

package com.lhf.springboot.echarts.pojo;

import java.util.List;


public class LineParam {

      private String legendName;

    private String[] ydatas;

    private List xdatas;

    //省略get/set方法
}

(3)echarts-option模块(组装图表option)-EchartLine.java(组装折线图option)(核心)

package com.lhf.springboot.echarts.option;


import com.github.abel533.echarts.Legend;
import com.github.abel533.echarts.axis.AxisLabel;
import com.github.abel533.echarts.axis.AxisLine;
import com.github.abel533.echarts.axis.CategoryAxis;
import com.github.abel533.echarts.axis.ValueAxis;
import com.github.abel533.echarts.code.Position;
import com.github.abel533.echarts.code.Trigger;
import com.github.abel533.echarts.json.GsonOption;
import com.github.abel533.echarts.series.Line;
import com.github.abel533.echarts.style.LineStyle;
import com.github.abel533.echarts.style.TextStyle;
import com.github.abel533.echarts.style.itemstyle.Normal;
import com.lhf.springboot.echarts.EnhancedOption;
import com.lhf.springboot.echarts.pojo.LinesData;

import java.util.List;


public class EchartLine {

    public static GsonOption createLine(LinesData linesData){

        //String[] types = { "邮件营销", "联盟广告", "视频广告" };
        //int[][] datas = { { 120, 132, 101, 134, 90, 230, 210 }, { 220, 182, 191, 234, 290, 330, 310 }, { 150, 232, 201, 154, 190, 330, 410 } };
        //String title = "广告数据";

        String title = linesData.getTitle();
        String legendName = linesData.getLineParam().getLegendName();
        String[] ydatas = linesData.getLineParam().getYdatas();
        boolean isHorizontal = linesData.isHorizontal();

        //String[] types = legendName;
        String[] types = {title};
        //int[][] xdatas = { { 120, 132, 101, 134, 90, 230, 210 }, { 220, 182, 191, 234, 290, 330, 310 }, { 150, 232, 201, 154, 190, 330, 410 } };
        List xdatas = linesData.getLineParam().getXdatas();


        Line line = new Line();  //三条线三个对象
        EnhancedOption option = new EnhancedOption();

        //文本样式
        TextStyle textStyle = new TextStyle();
        textStyle.color("red");
        textStyle.fontSize(15);
        textStyle.fontWeight("bolder");

        //title
        option.title().text(title).subtext("").x("left");  //大标题,小标题,位置
        //文本样式
        option.title().textStyle(textStyle);  //标题文本样式


        //提示工具 tooltip
        option.tooltip().trigger(Trigger.axis);// 在轴上触发提示数据
        //工具栏 toolbox
        //option.toolbox().show(true).feature(Tool.saveAsImage); //显示保存为图片

        //图例 legend
        Legend legend = new Legend();
        option.legend(legendName);  //图例
        option.legend().textStyle(textStyle); //图例文本样式

        //axisLabel
        AxisLabel axisLabel = new AxisLabel();
        TextStyle textStyle1 = new TextStyle();
        textStyle1.fontSize(15);
        textStyle1.fontWeight("bolder");
        axisLabel.show(true);
        axisLabel.textStyle(textStyle1);

        //axisLine
        AxisLine axisLine = new AxisLine();
        LineStyle lineStyle = new LineStyle();  //坐标轴样式
        lineStyle.color("#315070");
        lineStyle.width(4);
        axisLine.lineStyle(lineStyle);

        //xAxis
        CategoryAxis category = new CategoryAxis();  //轴分类
        category.data(ydatas);
        category.boundaryGap(false);// 起始和结束两端空白策略
        category.axisLabel(axisLabel);  //x轴文字样式
        category.axisLine(axisLine);  //x轴样式

        //yAxis
        ValueAxis valueAxis = new ValueAxis();
        valueAxis.axisLabel().show(true).textStyle().fontSize(15).fontWeight("bolder");  //y轴文字样式
        valueAxis.axisLine().lineStyle().color("#315070").width(4);  //y轴样式


        line.setSmooth(true);   //平滑曲线
        line.setShowAllSymbol(true); //标志图形默认只有主轴显示(随主轴标签间隔隐藏策略),如需全部显示可把showAllSymbol设为true
        line.setSymbolSize("15");  //点大小
        line.setDataFilter("nearest"); //在折线图的数据数量大于实际显示的像素宽度(高度)的时候会启用优化
        line.setLegendHoverlink(true); //是否启用图例(legend)hover时的联动响应(高亮显示)

        Normal normal = new Normal();
        normal.setShow(true);  //是否显示数据
        normal.color("green");  //数据颜色
        normal.position(Position.right); //数据显示位置
        line.label().normal(normal);

        LineStyle lineStyle1 = new LineStyle();   //折线样式
        lineStyle1.color("green");  //线颜色
        lineStyle1.width(4);  //线宽
        line.lineStyle(lineStyle1);

        //循环数据
        for(int i=0;i

(5)其他模块的相关代码见第一篇

四.插件环境配置

插件环境配置见第一篇说明

五.结合swagger文档测试

启动服务,访问swagger文档地址:http://localhost:8095/swagger-ui.html

测试数据:

{
  "horizontal": true,
  "lineParam": {
    "legendName": "胸罩图例",
    "xdatas": [
      [
       43364, 13899, 12000, 2181, 21798, 1796, 1300
      ]
    ],
    "ydatas": [
        "A罩杯", "B罩杯", "C罩杯", "D罩杯", "E罩杯", "F罩杯","G罩杯"
    ]
  },
  "title": "胸罩使用人数"
}

效果展示:

今天的分享就到这里,未完待续!

为大家推荐几门实战课程,来提升一下自己:

(1)Spring Boot打造企业级微信点餐系统

(2)Java秒杀系统高并发实战

(3)Java大数据实战 Storm构建实时流处理

(4)Java从单体到微服务打造房产销售平台


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/237910.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号