Django 基于echarts的图表

Django 基于echarts的图表

效果

在这里插入图片描述

HTML及js代码

{% extends 'layout.html' %}
{% load static %}

{% block content %}
<div class="container">
    <div class="panel panel-default">
        <div class="panel-heading">折线图</div>
        <div class="panel-body">
            <div></div>
        </div>
    </div>

    <div class="row">
        <div class="col-sm-8">
            <div class="panel panel-default">
                <div class="panel-heading">柱状图</div>
                <div class="panel-body">
                    <div id="m2" style="width: 100%;height: 400px;"></div>
                </div>
            </div>
        </div>
        <div class="col-sm-4">
            <div class="panel panel-default">
                <div class="panel-heading">饼图</div>
                <div class="panel-body">
                    <div id="m3" style="width: 100%;height: 400px;"></div>
                </div>
            </div>
        </div>
    </div>
</div>

{% endblock %}

{% block js %}
<script src="{% static 'js/echarts.min.js' %}"></script>
<script type="text/javascript">
    $(function (){
        initBar();
        iniPie();
    })

    function initBar(){
        var myChart = echarts.init(document.getElementById('m2'));
        var option = {
            title: {
                text: '销售信息',
                subtext: "广西分公司",
                textAlign: "auto",
                left:'center',
            },
            tooltip: {},
            legend: {
                data: [],
                bottom:0,
            },
            xAxis: {
                data: []
            },
            yAxis: {},
            series: []
        };

        $.ajax({
            url: "/chart/bar/",
            type: "get",
            dataType: "JSON",
            success: function (res){
                if (res.status){
                    option.legend.data = res.data.legend;
                    option.xAxis.data = res.data.x_axis;
                    option.series = res.data.series_list;
                    myChart.setOption(option);

                }


            }
        })


    }


    function  iniPie(){
        var myChart = echarts.init(document.getElementById('m3'));
        option = {
            title: {
                text: '营销占比',
                subtext: 'Fake Data',
                left: 'center'
            },
            tooltip: {
                trigger: 'item'
            },
            legend: {
                bottom: 0
            },
            series: [
                {
                    name: 'Access From',
                    type: 'pie',
                    radius: '50%',
                    data: [],
                    emphasis: {
                        itemStyle: {
                            shadowBlur: 10,
                            shadowOffsetX: 0,
                            shadowColor: 'rgba(0, 0, 0, 0.5)'
                        }
                    }
                }
            ]
        };

        $.ajax({
            url: "/chart/pie/",
            type: "get",
            dataType: "JSON",
            success: function (res){
                if (res.status){
                    option.series[0].data = res.data;
                    myChart.setOption(option);


                }

            }
        })


    }






</script>


{% endblock %}


视图函数代码

def chart_list(request):

    return render(request, 'chart_list.html')


def chart_bar(request):
    legend = ['销量']
    series_list = [
            {
                'name': '销量',
                'type': 'bar',
                'data': [5, 20, 36, 10, 10, 20]
            }
        ]
    x_axis = ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
    result = {
        'status': True,
        'data': {
            'legend': legend,
            'series_list': series_list,
            'x_axis': x_axis,
        }
    }
    return JsonResponse(result)

def chart_pie(request):
    data_dict = [
        { 'value': 1048, 'name': 'Search Engine' },
        { 'value': 735, 'name': 'Direct' },
        { 'value': 580, 'name': 'Email' },
        { 'value': 484, 'name': 'Union Ads' },
        { 'value': 300, 'name': 'Video Ads' }
    ]
    result = {
        'status': True,
        'data': data_dict,
    }
    return JsonResponse(result)

解读

导入echarts的js 文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值