环境:idea
语言:java
框架:springboot
思路:接上面关键3的内容,这里给出调用的示例,仅供参考
/**
* 生产多信号曲线
* @param pointValuesSort 很多信号值的数值内容
* @param pointIds 需要绘制曲线的信号值ID
* @return
*/
private WebEChartsOptions getPointCharts(List<PointValue> pointValuesSort,List<String> pointIds) {
List<String> xList = new LinkedList<>();
Map<String,List<Float>> yListMap = new HashMap<>();
pointValuesSort.stream().forEach(p -> {
if(Float.parseFloat(p.getValue())!=-40 && Float.parseFloat(p.getValue()) != -50 ) {
xList.add(DateUtils.parseDateToStr("yyyyMMdd HH:mm", p.getOriginTime()));
for(int i=0;i<pointIds.size();i++){
if(p.getPointId().equals(pointIds.get(i))){
String name = p.getPointDisplayName();
List<Float> yList = yListMap.get(name);
if(null == yList){
yList = new LinkedList<>();
}
yList.add(Float.parseFloat(p.getValue()));
yListMap.put(name,yList);
}
}
}
});
WebEChartsOptions eChartsOptions = new WebEChartsOptions();
eChartsOptions.setColor(EChartsUtil.Color());
EChartsTitle eChartsTitle = new EChartsTitle();
eChartsTitle.setText(pointValuesSort.get(0).getPointDisplayName()+pointValuesSort.get(0).getUnit());
eChartsTitle.setText("历史曲线");
eChartsTitle.setSubtext("历史曲线");
eChartsOptions.setTitle(eChartsTitle);
//添加图例
EChartsLegend eChartsLegend = new EChartsLegend();
List<String> legendDataList = new ArrayList<>();
//多个图例
for(Map.Entry<String,List<Float>> entry:yListMap.entrySet()){
String legendName = entry.getKey();
legendDataList.add(legendName);
}
eChartsLegend.setData(legendDataList);
eChartsLegend.setLeft("center");
eChartsOptions.setLegend(eChartsLegend);
//X轴坐标
EChartsXAxis eChartsXAxis = new EChartsXAxis();
List<String> sDateList = xList;
eChartsXAxis.setData(sDateList);
//分割线
EcSplitLine ecxSplitLine = new EcSplitLine();
ecxSplitLine.setShow(false);
eChartsXAxis.setSplitLine(ecxSplitLine);
//坐标轴刻度标签
ECxAxisAxisLabel eCxAxisAxisLabel = new ECxAxisAxisLabel();
eCxAxisAxisLabel.setRotate("0");
eChartsXAxis.setAxisLabel(eCxAxisAxisLabel);
eChartsOptions.setXAxis(eChartsXAxis);
List<EChartsYAxis> eChartsYAxisList = new ArrayList<>();
for(Map.Entry<String,List<Float>> entry:yListMap.entrySet()) {
EChartsYAxis eChartsYAxis = new EChartsYAxis();
eChartsYAxis.setName(entry.getKey());
eChartsYAxis.setMin("0");
eChartsYAxis.setMax("1");
if (entry.getValue().size() > 0) {
eChartsYAxis.setMin(this.getMin(entry.getValue()));
eChartsYAxis.setMax(this.getMax(entry.getValue()));
}
eChartsYAxis.setType("value");
EcSplitLine ecySplitLine = new EcSplitLine();
eChartsYAxis.setSplitLine(ecySplitLine);
eChartsYAxisList.add(eChartsYAxis);
}
eChartsOptions.setYAxis(eChartsYAxisList);
eChartsOptions.setSeries(this.getSeries(yListMap));
eChartsOptions.showPoint(true, true);
return eChartsOptions;
}
//获取曲线
private List<ParameterData> getSeries(Map<String,List<Float>> yListMap) {
List<ParameterData> parameterDataList = new ArrayList<>();
if (yListMap.size() < 1) {
return parameterDataList;
}
int j=0;
for(Map.Entry<String,List<Float>> entry:yListMap.entrySet()) {
ParameterData parameterData = new ParameterData();
String parameterName = entry.getKey();
parameterData.setName(parameterName);
List<String> dataList = new ArrayList<>();
for (int i = 0; i < entry.getValue().size(); i++) {
dataList.add(String.valueOf(entry.getValue().get(i)));
}
parameterData.setData(dataList);
parameterData.setType("line");
parameterData.setYAxisIndex(j++);
parameterData.setShowAllSymbol(false);
parameterDataList.add(parameterData);
}
return parameterDataList;
}
//获取最小值
private String getMin(List<Float> yList) {
//遍历map中的值
float minValue = yList.get(0);
for (int i = 1; i < yList.size(); i++) {
if (yList.get(i) < minValue) {
minValue = yList.get(i);
}
}
minValue = minValue - 3;
// if (minValue < 0) {
// minValue = 0;
// }
return String.valueOf(minValue);
}
//获取最大值
private String getMax(List<Float> yList) {
//遍历map中的值
float maxValue = yList.get(0); //这里不需要取出第一个值
for (int i = 1; i < yList.size(); i++) {
if (yList.get(i) > maxValue) {
maxValue = yList.get(i);
}
}
maxValue = maxValue+3f;
return String.valueOf(maxValue);
}