代码调整
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user