1.越线图
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
package com.njcn.echarts.json;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import com.google.gson.Gson;
|
||||
import com.njcn.echarts.pojo.bo.TolerateData;
|
||||
import com.njcn.echarts.pojo.constant.PicCommonData;
|
||||
import org.icepear.echarts.Option;
|
||||
@@ -14,6 +17,7 @@ import org.icepear.echarts.components.coord.cartesian.LogAxis;
|
||||
import org.icepear.echarts.components.coord.cartesian.ValueAxis;
|
||||
import org.icepear.echarts.components.grid.Grid;
|
||||
import org.icepear.echarts.components.legend.Legend;
|
||||
import org.icepear.echarts.components.series.LineStyle;
|
||||
import org.icepear.echarts.components.text.Label;
|
||||
import org.icepear.echarts.components.title.Title;
|
||||
import org.icepear.echarts.components.tooltip.Tooltip;
|
||||
@@ -21,7 +25,11 @@ import org.icepear.echarts.origin.util.SeriesOption;
|
||||
import org.icepear.echarts.render.Engine;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
@@ -517,4 +525,71 @@ public class LineGenerator {
|
||||
instantOption.setSeries(new LineSeries[]{aSeries, bSeries, cSeries});
|
||||
return ENGINE.renderJsonOption(instantOption);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: App越线指标图(单相)
|
||||
* @param title 标题
|
||||
* @param values 数据值
|
||||
* @param limitName 限制值标题
|
||||
* @param limit 限制值
|
||||
* @return: java.lang.String
|
||||
* @Author: wr
|
||||
* @Date: 2023/11/6 11:38
|
||||
*/
|
||||
public static String generateSteadyTargetOption(String title,Map<String ,List<List<Object>>> values,String limitName,List<List<Object>> limit) {
|
||||
Option persistentTimeOption = new Option();
|
||||
//取消渲染动画
|
||||
persistentTimeOption.setAnimation(false);
|
||||
//背景色
|
||||
persistentTimeOption.setBackgroundColor(PicCommonData.PIC_BACK_COLOR);
|
||||
//标题
|
||||
persistentTimeOption.setTitle(new Title().setLeft(PicCommonData.CENTER).setText(title));
|
||||
//设置图例
|
||||
List<String> name = values.keySet().stream().collect(Collectors.toList());
|
||||
name.add(limitName);
|
||||
persistentTimeOption.setLegend(new Legend().setData(name.stream().toArray(String[]::new)).setLeft(10).setShow(true));
|
||||
//设置边距
|
||||
persistentTimeOption.setGrid(new Grid().setLeft("3%").setRight("5%").setBottom("3%").setContainLabel(true));
|
||||
//横坐标
|
||||
persistentTimeOption.setXAxis(new CategoryAxis()
|
||||
.setType("time")
|
||||
.setName("(时间)")
|
||||
.setBoundaryGap(false)
|
||||
);
|
||||
persistentTimeOption.setColor(new String[]{"#CCC","#A0522D"});
|
||||
Integer max=0;
|
||||
if(CollUtil.isNotEmpty(limit)){
|
||||
Integer num = (Integer)limit.get(0).get(1);
|
||||
max=(int)(num * 0.2) + num;
|
||||
}
|
||||
//纵坐标
|
||||
persistentTimeOption.setYAxis(new ValueAxis()
|
||||
.setAxisLine(new AxisLine().setShow(true))
|
||||
.setMin(0).setMax(max)
|
||||
.setNameTextStyle(new AxisNameTextStyle().setFontStyle("15px"))
|
||||
);
|
||||
List<SeriesOption> list=new ArrayList<>();
|
||||
values.forEach((key,value)->{
|
||||
LineSeries proportion = new LineSeries()
|
||||
.setName(key)
|
||||
.setType("line")
|
||||
.setSmooth(true)
|
||||
.setLabel(new BarLabel().setShow(true).setPosition("bottom"))
|
||||
.setData(value);
|
||||
list.add(proportion);
|
||||
});
|
||||
LineSeries proportion2 = new LineSeries()
|
||||
.setName(limitName)
|
||||
.setSmooth(true)
|
||||
.setLineStyle(new LineStyle().setColor("green").setWidth(1).setType("dashed").setOpacity(1))
|
||||
.setData(limit);
|
||||
list.add(proportion2);
|
||||
SeriesOption[] seriesOptions = list.stream().toArray(SeriesOption[]::new);
|
||||
persistentTimeOption.setSeries(new SeriesOption[]{proportion2, proportion2});
|
||||
System.out.println(persistentTimeOption.toString());
|
||||
String s = new Gson().toJson(persistentTimeOption);
|
||||
return ENGINE.renderJsonOption(persistentTimeOption);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -11,10 +11,7 @@ import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author hongawen
|
||||
@@ -358,5 +355,65 @@ public class DrawPicUtil {
|
||||
return drawPic(eventDensityJson, width, height);
|
||||
}
|
||||
|
||||
/***
|
||||
* 绘制App越线指标图(单相)
|
||||
* @author hongawen
|
||||
* @date 2023/6/21 11:01
|
||||
* @return String base64数据
|
||||
*/
|
||||
public String drawSteadyTargetPic(String title,Map<String ,List<List<Object>>> values,String limitName,List<List<Object>> limit) {
|
||||
return drawSteadyTargetPic(title, values, limitName, limit, 0, 0);
|
||||
}
|
||||
|
||||
/***
|
||||
* 绘制App越线指标图(单相)
|
||||
* @author hongawen
|
||||
* @date 2023/6/21 11:01
|
||||
* @return String base64数据
|
||||
*/
|
||||
public String drawSteadyTargetPic(String title,Map<String ,List<List<Object>>> values,String limitName,List<List<Object>> limit,int width, int height) {
|
||||
String instantJson = LineGenerator.generateSteadyTargetOption(title, values, limitName, limit);
|
||||
return drawPic(instantJson, width, height);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
DrawPicUtil util=new DrawPicUtil();
|
||||
List<List<Object>> values=new ArrayList<>();
|
||||
List<Object> a = new ArrayList() {{
|
||||
add("2023-10-10 00:10:00");
|
||||
add(12.3);
|
||||
}};
|
||||
values.add(a);
|
||||
List<Object> a1 = new ArrayList() {{
|
||||
add("2023-10-10 00:20:00");
|
||||
add(22.3);
|
||||
}};
|
||||
values.add(a1);
|
||||
List<Object> a2 = new ArrayList() {{
|
||||
add("2023-10-10 00:30:00");
|
||||
add(32.3);
|
||||
}};
|
||||
values.add(a2);
|
||||
|
||||
List<List<Object>> limit=new ArrayList<>();
|
||||
List<Object> b = new ArrayList() {{
|
||||
add("2023-10-10 00:10:00");
|
||||
add(40);
|
||||
}};
|
||||
limit.add(b);
|
||||
List<Object> b1 = new ArrayList() {{
|
||||
add("2023-10-10 00:20:00");
|
||||
add(40);
|
||||
}};
|
||||
limit.add(b1);
|
||||
List<Object> b2 = new ArrayList() {{
|
||||
add("2023-10-10 00:30:00");
|
||||
add(40);
|
||||
}};
|
||||
limit.add(b2);
|
||||
Map<String,List<List<Object>>> da = new HashMap<>();
|
||||
da.put("实际", new ArrayList<>());
|
||||
String s = util.drawSteadyTargetPic("电压", da, "限制", limit);
|
||||
System.out.println();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user