栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

今天的Django教训汇总:pyecharts和django融合,以雷达图为例-20211021

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

今天的Django教训汇总:pyecharts和django融合,以雷达图为例-20211021

成功将django和pyecharts初步融合

views.py

# Season尝试导入pyecharts表格

def page_draggable_layout(request,eid):

    # 创建雷达图
    c = (
        Radar()
        .add_schema(
            schema=[
                opts.RadarIndicatorItem(name="接纳反馈", max_=100),
                opts.RadarIndicatorItem(name="学习敏锐度", max_=100),
                opts.RadarIndicatorItem(name="结果导向", max_=100),
                opts.RadarIndicatorItem(name="全局思维", max_=100),
                opts.RadarIndicatorItem(name="适应力", max_=100),
                opts.RadarIndicatorItem(name="成就他人", max_=100),
                opts.RadarIndicatorItem(name="领导意愿", max_=100),
                opts.RadarIndicatorItem(name="平衡人际与任务", max_=100),
                opts.RadarIndicatorItem(name="辅导", max_=100),
                opts.RadarIndicatorItem(name="授权委责", max_=100),
                opts.RadarIndicatorItem(name="建立成功团队", max_=100),
                opts.RadarIndicatorItem(name="管理人际关系", max_=100),
                opts.RadarIndicatorItem(name="影响力", max_=100),
                opts.RadarIndicatorItem(name="建立伙伴关系", max_=100),
                opts.RadarIndicatorItem(name="计划与组织", max_=100),
            ],
            splitarea_opt=opts.SplitAreaOpts(
                is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
            ),
        )
        .set_global_opts(
            legend_opts=opts.LegendOpts(),
            title_opts=opts.TitleOpts(title="PP Test结果对比图"),
        )
        #.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    )

    employee_list = Employee.objects.filter(eid=eid)


    # 将员工数据写进去雷达图
    for employee in employee_list:
        v1=[]
        data_list = []
        data_list.append(employee.score_jieshoufankui)
        data_list.append(employee.score_xueximinruidu)
        data_list.append(employee.score_jieguodaoxiang)
        data_list.append(employee.score_quanjusiwei)
        data_list.append(employee.score_shiyingli)
        data_list.append(employee.score_chengjiutaren)
        data_list.append(employee.score_lingdaoyiyuan)                
        data_list.append(employee.score_pinghengrenjiyurenwu)
        data_list.append(employee.score_fudao)
        data_list.append(employee.score_shouquanweize)
        data_list.append(employee.score_jianlichenggongtuandui)
        data_list.append(employee.score_guanlirenjiguanxi)
        data_list.append(employee.score_yingxiangli)
        data_list.append(employee.score_jianlihuobanguanxi)
        data_list.append(employee.score_jihuayuzuzhi)

        #v1 = [[4300, 10000, 28000, 35000, 50000, 19000]]
        v1.append(data_list)
        c.add(series_name = employee.name, data = v1, label_opts=opts.LabelOpts(is_show=False))



    # 得出部门参考数据
    dept_code_ = employee_list.first().dept_code[:4] #部门代码取前4码
    print(dept_code_)
    dept_employee = Employee.objects.filter(dept_code__istartswith=dept_code_)
    score_jieshoufankui = dept_employee.aggregate(Avg('score_jieshoufankui'))
    score_xueximinruidu = dept_employee.aggregate(Avg('score_xueximinruidu'))
    score_jieguodaoxiang = dept_employee.aggregate(Avg('score_jieguodaoxiang'))
    score_quanjusiwei = dept_employee.aggregate(Avg('score_quanjusiwei'))
    score_shiyingli = dept_employee.aggregate(Avg('score_shiyingli'))
    score_chengjiutaren = dept_employee.aggregate(Avg('score_chengjiutaren'))
    score_lingdaoyiyuan = dept_employee.aggregate(Avg('score_lingdaoyiyuan'))
    score_pinghengrenjiyurenwu = dept_employee.aggregate(Avg('score_pinghengrenjiyurenwu'))
    score_fudao = dept_employee.aggregate(Avg('score_fudao'))
    score_shouquanweize = dept_employee.aggregate(Avg('score_shouquanweize'))
    score_jianlichenggongtuandui = dept_employee.aggregate(Avg('score_jianlichenggongtuandui'))
    score_guanlirenjiguanxi = dept_employee.aggregate(Avg('score_guanlirenjiguanxi'))
    score_yingxiangli = dept_employee.aggregate(Avg('score_yingxiangli'))
    score_jianlihuobanguanxi = dept_employee.aggregate(Avg('score_jianlihuobanguanxi'))
    score_jihuayuzuzhi = dept_employee.aggregate(Avg('score_jihuayuzuzhi'))



    # 将部门参考数据写进去雷达图
    if True:
        v2=[]
        data_list2 = []
        data_list2.append(score_jieshoufankui['score_jieshoufankui__avg'])
        data_list2.append(score_xueximinruidu['score_xueximinruidu__avg'])
        data_list2.append(score_jieguodaoxiang['score_jieguodaoxiang__avg'])
        data_list2.append(score_quanjusiwei['score_quanjusiwei__avg'])
        data_list2.append(score_shiyingli['score_shiyingli__avg'])
        data_list2.append(score_chengjiutaren['score_chengjiutaren__avg'])
        data_list2.append(score_lingdaoyiyuan['score_lingdaoyiyuan__avg'])                
        data_list2.append(score_pinghengrenjiyurenwu['score_pinghengrenjiyurenwu__avg'])
        data_list2.append(score_fudao['score_fudao__avg'])
        data_list2.append(score_shouquanweize['score_shouquanweize__avg'])
        data_list2.append(score_jianlichenggongtuandui['score_jianlichenggongtuandui__avg'])
        data_list2.append(score_guanlirenjiguanxi['score_guanlirenjiguanxi__avg'])
        data_list2.append(score_yingxiangli['score_yingxiangli__avg'])
        data_list2.append(score_jianlihuobanguanxi['score_jianlihuobanguanxi__avg'])
        data_list2.append(score_jihuayuzuzhi['score_jihuayuzuzhi__avg'])

        print(data_list2)
        #v1 = [[4300, 10000, 28000, 35000, 50000, 19000]]
        v2.append(data_list2)
        #c.add('部门平均水平', v2, color="#444693")
        c.add(series_name = '部门平均水平', data = v2, color="#444693", label_opts=opts.LabelOpts(is_show=False))




    # 得出厂处级参考数据
    plant_code_ = employee_list.first().dept_code[:3] #部门代码取前4码
    print(plant_code_)
    dept_employee = Employee.objects.filter(dept_code__istartswith=plant_code_)
    score_jieshoufankui = dept_employee.aggregate(Avg('score_jieshoufankui'))
    score_xueximinruidu = dept_employee.aggregate(Avg('score_xueximinruidu'))
    score_jieguodaoxiang = dept_employee.aggregate(Avg('score_jieguodaoxiang'))
    score_quanjusiwei = dept_employee.aggregate(Avg('score_quanjusiwei'))
    score_shiyingli = dept_employee.aggregate(Avg('score_shiyingli'))
    score_chengjiutaren = dept_employee.aggregate(Avg('score_chengjiutaren'))
    score_lingdaoyiyuan = dept_employee.aggregate(Avg('score_lingdaoyiyuan'))
    score_pinghengrenjiyurenwu = dept_employee.aggregate(Avg('score_pinghengrenjiyurenwu'))
    score_fudao = dept_employee.aggregate(Avg('score_fudao'))
    score_shouquanweize = dept_employee.aggregate(Avg('score_shouquanweize'))
    score_jianlichenggongtuandui = dept_employee.aggregate(Avg('score_jianlichenggongtuandui'))
    score_guanlirenjiguanxi = dept_employee.aggregate(Avg('score_guanlirenjiguanxi'))
    score_yingxiangli = dept_employee.aggregate(Avg('score_yingxiangli'))
    score_jianlihuobanguanxi = dept_employee.aggregate(Avg('score_jianlihuobanguanxi'))
    score_jihuayuzuzhi = dept_employee.aggregate(Avg('score_jihuayuzuzhi'))






    # 将厂处级参考数据写进去雷达图
    if True:
        v3=[]
        data_list3 = []
        data_list3.append(score_jieshoufankui['score_jieshoufankui__avg'])
        data_list3.append(score_xueximinruidu['score_xueximinruidu__avg'])
        data_list3.append(score_jieguodaoxiang['score_jieguodaoxiang__avg'])
        data_list3.append(score_quanjusiwei['score_quanjusiwei__avg'])
        data_list3.append(score_shiyingli['score_shiyingli__avg'])
        data_list3.append(score_chengjiutaren['score_chengjiutaren__avg'])
        data_list3.append(score_lingdaoyiyuan['score_lingdaoyiyuan__avg'])                
        data_list3.append(score_pinghengrenjiyurenwu['score_pinghengrenjiyurenwu__avg'])
        data_list3.append(score_fudao['score_fudao__avg'])
        data_list3.append(score_shouquanweize['score_shouquanweize__avg'])
        data_list3.append(score_jianlichenggongtuandui['score_jianlichenggongtuandui__avg'])
        data_list3.append(score_guanlirenjiguanxi['score_guanlirenjiguanxi__avg'])
        data_list3.append(score_yingxiangli['score_yingxiangli__avg'])
        data_list3.append(score_jianlihuobanguanxi['score_jianlihuobanguanxi__avg'])
        data_list3.append(score_jihuayuzuzhi['score_jihuayuzuzhi__avg'])

        print(data_list3)
        #v1 = [[4300, 10000, 28000, 35000, 50000, 19000]]
        v3.append(data_list3)
        #c.add('厂处平均水平', v3, color="#1d953f")
        c.add(series_name = '厂处平均水平', data = v3, color="#1d953f", label_opts=opts.LabelOpts(is_show=False))
        
    


    grid = (
    Grid()
    .add(c, grid_opts=opts.GridOpts(pos_right="80%"))
    #.add(d, grid_opts=opts.GridOpts(pos_left="80%"))
    )

    return HttpResponse(grid.render_embed())

urls.py

from django.urls import path
from django.conf.urls import url

from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('search_results/', views.search_results, name='search_results'),
    path('search_results2/', views.search_results2, name='search_results2'),
    path('search_results//', views.search_results_detail, name='search_results_detail'),
    path('page_draggable_layout//',views.page_draggable_layout,name='page_draggable_layout'),
]

models.py

from django.db import models
from django.core.validators import MaxValuevalidator, MinValuevalidator 


# Create your models here.
class Employee(models.Model):
    eid = models.CharField(max_length=200,null=True)
    name = models.CharField(max_length=200,null=True)
    dept_code = models.CharField(max_length=200,null=True)
    level_opt = (
        (u'课级', u'课级'),
        (u'部级', u'部级'),
    )
    level = models.CharField(max_length=200,choices=level_opt,null=True)
    function_opt = (
        (u'工程类', u'工程类'),
        (u'生产类', u'生产类'),
        (u'品质类', u'品质类'),
        (u'资材类', u'资材类'),
        (u'托管', u'托管'),
        (u'其他', u'其他'),
    )   
    function = models.CharField(max_length=200,choices=function_opt,null=True)
    batch_opt = (
        (u'WZS-P1', u'WZS-P1'),
        (u'WZS-P3', u'WZS-P3'),
        (u'WZS-P6', u'WZS-P6'),
        (u'WZS-WT其他', u'WZS-WT其他'),
    )   
    batch = models.CharField(max_length=200,choices=batch_opt,null=True)
    mail = models.CharField(max_length=200,null=True, verbose_name=r'邮箱地址',)
    score_jieshoufankui = models.IntegerField(default=0, verbose_name=r'接纳反馈', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_xueximinruidu = models.IntegerField(default=0, verbose_name=r'学习敏锐度', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_jieguodaoxiang = models.IntegerField(default=0, verbose_name=r'结果导向', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_quanjusiwei = models.IntegerField(default=0, verbose_name=r'全局思维', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_shiyingli = models.IntegerField(default=0, verbose_name=r'适应力', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_chengjiutaren = models.IntegerField(default=0, verbose_name=r'成就他人', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_lingdaoyiyuan = models.IntegerField(default=0, verbose_name=r'领导意愿', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_pinghengrenjiyurenwu = models.IntegerField(default=0, verbose_name=r'平衡人际与任务', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_fudao = models.IntegerField(default=0, verbose_name=r'辅导', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_shouquanweize = models.IntegerField(default=0, verbose_name=r'授权委责', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_jianlichenggongtuandui = models.IntegerField(default=0, verbose_name=r'建立成功团队', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_guanlirenjiguanxi = models.IntegerField(default=0, verbose_name=r'管理人际关系', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_yingxiangli = models.IntegerField(default=0, verbose_name=r'影响力', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_jianlihuobanguanxi = models.IntegerField(default=0, verbose_name=r'建立伙伴关系', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_jihuayuzuzhi = models.IntegerField(default=0, verbose_name=r'计划与组织', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')


    def __str__(self):
        return str(self.name)



# 定义后台上传Employee文件的接口
class import_Employee(models.Model):
    file = models.FileField(upload_to='file')
    name = models.CharField(max_length=50,verbose_name=r'文件名')

    class meta:
        ordering = ['name']

    def __str__(self):
        return str(self.name)

templates使用pyecharts默认模板

{% import 'macro' as macro %}



    
    {{ chart.page_title }}
    {{ macro.render_chart_dependencies(chart) }}


    {{ macro.render_chart_content(chart) }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/339161.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号