echarts画折现图,要点:时间戳转换strf,echarts折线图相关属性

近期在公司实现在线实时监控特性报表系统,还没有完成,中间有部分知识点记录

先看看效果,发现数据还是有些问题,后期准备用pandas进行数据清洗:

views核心代码:

from django.shortcuts import render,redirect,HttpResponse
from datetime import datetime,timedelta
from pereport import PEModels,models
from functools import reduce
from pereport.conf.report_settings import CHART

#随机产生线条颜色
import random
def randomcolor():
    colorArr = ['1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']
    color = ""
    for i in range(6):
        color += colorArr[random.randint(0,14)]
    return "#"+color

def big_chart(request):

    return render(request, "report/pe/big_line_chart.html")
def bigcd_chart(request):
    param = request.GET.get("param",None)
    print(param)
    end = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    start = (datetime.now() + timedelta(hours=-24)).strftime("%Y-%m-%d %H:%M:%S")
    ret_ls=[]
    temp = None
    for item in CHART[param]:

        sub_equip_id_pds = item["sub_equip_id_pds"]
        step_id_insp = item["step_id_insp"]
        param_name = item["param_name"]
        float_point = item["float_point"]
        temp = big_cd(sub_equip_id_pds,start,end,step_id_insp,param_name,float_point)
        ret_ls.append(temp)

    ret_dict = {"chart1":ret_ls[0],"chart2":ret_ls[1],"line":param}
    return render(request,"report/pe/big_line_chart.html",ret_dict)

def small_chart(request):
    return render(request, "report/pe/small_line_chart.html")

def big_cd(sub_equip_id_pds,start,end,step_id_insp,param_name,float_point):
    #定义捞取数据时间段

    #获取当前inline Run货产品名
    prod, prod_ls, prod_name = PEModels.prod_id(
        sub_equip_id_pds=sub_equip_id_pds,
        start=start,
        end=end, )

    prod_ls = (prod_name, "")
    obj=""
    if prod:
        #获取产品信息
        obj = models.PEProdInfo.objects.filter(
            product_id=prod_name,step_id_insp=step_id_insp,sub_equip_id_pds=sub_equip_id_pds,
            param_name=param_name
        ).first()
        if obj:

            #print(obj,obj.OOS_H,"xxxxxxxxxxxx")
            #获取量测当侧EXP/COT经过TPM的Glass ID
            sampling_cnt, glasses = PEModels.glass_info_byINSPEQ(
                step_id_pds=obj.step_id_pds,
                sub_equip_id_pds=obj.sub_equip_id_pds,
                prod_ls=prod_ls,
                start=start,
                end=end,
                step_id_insp=obj.step_id_insp
            )
            #print(sampling_cnt,glasses)

            #获取这些glass id的量测数据,time_asc=0表示先以时间排序然后以site_no排序
            ret=PEModels.insp_rawdata(
                    step_id_insp=obj.step_id_insp,
                    step_id_pds = obj.step_id_pds,
                    prod=prod,
                    param_name=obj.param_name,
                    glasses=tuple(glasses),
                    start=start, end=end,time_asc=0
                )

            html_str = """    {
                            data: %s,
                            type: 'line',
                            itemStyle : {
                                normal : {
                                    lineStyle:{
                                        color:'#FFFFFF'
                                    }
                                }
                            },
                
                        },"""
            #平均值,并设置可以显示数值
            html_str1="""{
                    data: %s,
                    type: 'line',
                    itemStyle : { normal:
                                    {label : 
                                        {show: true,color: 'red',textStyle:
                                            {
                                                fontWeight: 'bolder'		//字体加粗
                                            }
                                        }
                                    }
                            },
                    markLine : {
                        symbol:'none',
                        lineStyle: {
                            normal: {
                                type: 'solid'
                            }
                        },
                        data : [
                            { yAxis: %s ,name:'min'},
                            { yAxis: %s ,name:'target'},
                            { yAxis: %s ,name:'max'},
                        ]
                    },
                },"""
            #by时间画CD图
            html_ret=""
            x_data = []
            x_data_time = []
            data = set()
            data_temp=[]
            data_ret = []

            if ret:
                for item in ret:
                    #x轴坐标系标签
                    if item[0] not in x_data:
                        x_data_time.append(item[1].strftime("%m-%d %H:%M"))
                        x_data.append(item[0])

                    #y轴对应的数据
                    if item[2] not in data:
                        data_ret.append(data_temp)
                        data_temp=[]
                        data.add(item[2])
                        data_temp.append(item[3])
                    else:
                        data_temp.append(item[3])
                print("data_temp",data_temp)
            data_ret.append(data_temp)
            #print(data_ret,len(data_ret))

            average_data=[]
            sum
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值