工作笔记 报表项目- 关键4:echarts调用示例20230309

环境: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);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值