今天的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/<eid>/', views.search_results_detail, name='search_results_detail'),
    path('page_draggable_layout/<eid>/',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 %}
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>{{ chart.page_title }}</title>
    {{ macro.render_chart_dependencies(chart) }}
</head>
<body>
    {{ macro.render_chart_content(chart) }}
</body>
</html>

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值