代码调整

This commit is contained in:
2023-06-21 15:51:30 +08:00
parent 6dbbb6ca88
commit 316317942e
10 changed files with 589 additions and 585 deletions

View File

@@ -0,0 +1,175 @@
package com.njcn.echarts.json;
import com.njcn.echarts.pojo.bo.TolerateData;
import com.njcn.echarts.pojo.constant.PicCommonData;
import org.icepear.echarts.Option;
import org.icepear.echarts.charts.bar.BarSeries;
import org.icepear.echarts.charts.line.LineSeries;
import org.icepear.echarts.charts.scatter.ScatterSeries;
import org.icepear.echarts.components.coord.AxisNameTextStyle;
import org.icepear.echarts.components.coord.SplitLine;
import org.icepear.echarts.components.coord.ValueAxisLabel;
import org.icepear.echarts.components.coord.cartesian.CategoryAxis;
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.title.Title;
import org.icepear.echarts.components.tooltip.Tooltip;
import org.icepear.echarts.origin.util.SeriesOption;
import org.icepear.echarts.render.Engine;
import java.util.List;
/**
* @author hongawen
* @version 1.0.0
* @date 2023年06月21日 10:05
*/
public class LineGenerator {
private final static Engine ENGINE = new Engine();
/***
* 生成ITIC曲线
* @author hongawen
* @date 2023/6/21 10:06
*/
public static String generateIticOption(TolerateData tolerateData) {
Option iticOption = new Option();
//取消渲染动画
iticOption.setAnimation(false);
//背景色
iticOption.setBackgroundColor(PicCommonData.PIC_BACK_COLOR);
//标题
iticOption.setTitle(new Title().setLeft(PicCommonData.CENTER).setText("ITIC曲线"));
//上下左右的图内间距
iticOption.setGrid(new Grid().setTop("80px").setLeft("40px").setRight("40px").setBottom("10%"));
//设置图例
iticOption.setLegend(new Legend().setData(new String[]{"上限", "下限", "可容忍事件", "不可容忍事件"}).setTop("26px").setLeft(0).setBottom("94%"));
//设置图例对应的颜色
iticOption.setColor(new String[]{"#FF8C00", "#00BFFF", "green", "red"});
//横坐标
iticOption.setXAxis(new LogAxis().setMin("0.001").setMax("1000").setSplitLine(new SplitLine().setShow(false)).setName("s"));
//纵坐标
iticOption.setYAxis(new ValueAxis().setName("%").setMinInterval(3).setSplitNumber(10));
//处理上限配置
LineSeries upperLimit = new LineSeries()
.setName("上限")
.setData(new float[][]{{0.001f, 200}, {0.003f, 140}, {0.003f, 120}, {0.5f, 120}, {0.5f, 110}, {10, 110}, {1000, 110}})
.setShowSymbol(false)
.setTooltip(new Tooltip().setShow(false));
//处理下限配置
LineSeries lowerLimit = new LineSeries()
.setName("下限")
.setData(new float[][]{{0.02f, 0}, {0.02f, 70}, {0.5f, 70}, {0.5f, 80}, {10, 80}, {10, 90}, {1000, 90}})
.setShowSymbol(false)
.setTooltip(new Tooltip().setShow(false));
//配置可容忍点数据
ScatterSeries tolerate = new ScatterSeries()
.setName("可容忍事件")
.setSymbol("circle")
.setData(tolerateData.getTolerateData());
//配置不可容忍点数据
ScatterSeries unTolerate = new ScatterSeries()
.setName("不可容忍事件")
.setSymbol("circle")
.setData(tolerateData.getUnTolerateData());
iticOption.setSeries(new SeriesOption[]{upperLimit, lowerLimit, tolerate, unTolerate});
return ENGINE.renderJsonOption(iticOption);
}
/***
* 生成F47曲线
* @author hongawen
* @date 2023/6/21 10:06
*/
public static String generateF47Option(TolerateData tolerateData) {
Option iticOption = new Option();
//取消渲染动画
iticOption.setAnimation(false);
//背景色
iticOption.setBackgroundColor(PicCommonData.PIC_BACK_COLOR);
//标题
iticOption.setTitle(new Title().setLeft(PicCommonData.CENTER).setText("SEMI F47曲线"));
//上下左右的图内间距
iticOption.setGrid(new Grid().setTop("80px").setLeft("40px").setRight("40px").setBottom("10%"));
//设置图例
iticOption.setLegend(new Legend().setData(new String[]{"边界线", "可容忍事件", "不可容忍事件"}).setTop("26px").setLeft(0).setBottom("94%"));
//设置图例对应的颜色
iticOption.setColor(new String[]{"yellow", "green", "red"});
//横坐标
iticOption.setXAxis(new LogAxis().setMin("0.001").setMax("1000").setSplitLine(new SplitLine().setShow(false)).setName("s"));
//纵坐标
iticOption.setYAxis(new ValueAxis().setName("%").setMinInterval(0.1).setSplitNumber(10).setMax(100));
//处理边界线
LineSeries borderLimit = new LineSeries()
.setName("边界线")
.setData(new float[][]{{0.05f, 0}, {0.05f, 50}, {0.2f, 50}, {0.2f, 70}, {0.5f, 70}, {0.5f, 80}, {10, 80}, {10, 90}, {1000, 90}})
.setShowSymbol(false)
.setTooltip(new Tooltip().setShow(false));
//配置可容忍点数据
ScatterSeries tolerate = new ScatterSeries()
.setName("可容忍事件")
.setSymbol("circle")
.setData(tolerateData.getTolerateData());
//配置不可容忍点数据
ScatterSeries unTolerate = new ScatterSeries()
.setName("不可容忍事件")
.setSymbol("circle")
.setData(tolerateData.getUnTolerateData());
iticOption.setSeries(new SeriesOption[]{borderLimit, tolerate, unTolerate});
return ENGINE.renderJsonOption(iticOption);
}
/***
* 生成暂降幅值
* @author hongawen
* @date 2023/6/21 10:06
*/
public static String generateEventAmplitudeOption(List<String> ylinedata, List<String> ybardata) {
Option iticOption = new Option();
//取消渲染动画
iticOption.setAnimation(false);
//背景色
iticOption.setBackgroundColor(PicCommonData.PIC_BACK_COLOR);
//标题
iticOption.setTitle(new Title().setLeft(PicCommonData.CENTER).setText("暂降幅值的概率分布"));
//设置图例
iticOption.setLegend(new Legend().setData(new String[]{"概率分布", "占比"}).setLeft(10).setShow(true));
//横坐标
iticOption.setXAxis(new CategoryAxis()
.setBoundaryGap(true)
.setName("暂降幅值")
.setNameTextStyle(new AxisNameTextStyle().setFontStyle("15px"))
.setData(new String[]{"0", "10%", "20%", "30%", "40%", "50%", "60%", "70%", "80%", "90%"})
);
//纵坐标
iticOption.setYAxis(new ValueAxis[]{
new ValueAxis()
.setName("%")
.setNameTextStyle(new AxisNameTextStyle().setFontStyle("15px"))
.setAxisLabel(new ValueAxisLabel().setFormatter("{value}%"))
});
//配置概率分布
LineSeries probability = new LineSeries()
.setName("概率分布")
.setData(ylinedata);
//配置占比
BarSeries proportion = new BarSeries()
.setName("占比")
.setBarWidth(30)
.setData(ybardata);
iticOption.setSeries(new SeriesOption[]{probability, proportion});
return ENGINE.renderJsonOption(iticOption);
}
}