【web开发】10、数据统计(echarts)--柱状图、折线图、饼图

2023-09-16 22:09:20

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、echarts是什么?

ECharts(ECharts Baidu Visualization)是一个由百度开发的优秀的开源数据可视化库,用于创建交互性和可定制性强的图表和数据可视化。它支持多种图表类型,包括折线图、柱状图、饼图、散点图、雷达图、热力图等,可以用于展示各种不同类型的数据。

二、使用步骤

1.引入CDN

    <script src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js"></script>

2.设置高度&宽度

在绘图前我们需要为 ECharts 准备一个定义了高宽的 DOM 容器,否则图表显示不出来。

<div id="m1" style="width:100%;height: 400px;"></div>

3.后端

存取数据及返回页面

#chart.py
from django.shortcuts import render
from django.http import JsonResponse


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],
        },
        {
            "name": '业绩',
            "type": 'bar',
            "data": [53, 42, 36, 23, 10, 30],
        }
    ]
    x_axis = ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']

    result={
        "status":True,
        "data":{
            "legend":legend,
            "series_list":series_list,
            "x_axis":x_axis,
        }
    }
    return JsonResponse(result)

def chart_pie(request):
    db_data_list = [
        {"value": 1048, "name": 'IT部门'},
        {"value": 735, "name": '销售部门'},
        {"value": 580, "name": '摆烂部门'},
    ]
    result = {
        "status":True,
        "data":db_data_list,
    }
    return JsonResponse(result)

def chart_line(request):
    series_data = [820, 932, 901, 934, 1290, 1330, 1320]
    x_axis = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    result={
        "status":True,
        "series_data":series_data,
        "x_axis":x_axis,
    }
    return JsonResponse(result)

4.前端

// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById(‘m1’));
// 指定图表的配置项和数据
var option ={…}
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);

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

{% block content %}
    <div class="container">
        <div>
            <div class="row">
                <div class="col-sm-12">
                    <div class="panel panel-default">
                        <div class="panel-heading">折线图</div>
                        <div class="panel-body">
                            <div id="m1" style="width:100%;height: 400px;"></div>
                        </div>
                    </div>
                </div>

                <div class="col-sm-8">
                    <div class="panel panel-default">
                        <div class="panel-heading">柱状图</div>
                        <div class="panel-body">
                            <div id="m2" style="width: 600px;height: 400px;"></div>
                        </div>
                    </div>
                </div>

                <div class="col-sm-8">
                    <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>

    </div>

{% endblock %}

{% block js %}
    <script src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js"></script>
    <script type="text/javascript">
        $(function () {
            initLine();
            initBar();
            initPie();
        })

        function initLine() {
            // 基于准备好的dom,初始化echarts实例
            var myChart = echarts.init(document.getElementById('m1'));
            var option = {
                title: {
                    text: 'Stacked Line',
                    textAlign: "auto",
                    left: "center",
                },
                xAxis: {
                    type: 'category',
                    data: []
                },
                yAxis: {
                    type: 'value'
                },
                series: [
                    {
                        data: [],
                        type: 'line',
                        smooth: true
                    }
                ]
            };

            $.ajax({
                url: "/chart/line/",
                type: "get",
                dataType: "JSON",
                success: function (res) {
                    if (res.status) {
                        option.xAxis.data = res.x_axis;
                        option.series[0].data = res.series_data;
                        // 使用刚指定的配置项和数据显示图表。
                        myChart.setOption(option);
                    }
                }
            })
        }

        function initBar() {
            // 基于准备好的dom,初始化echarts实例
            var myChart = echarts.init(document.getElementById('m2'));

            // 指定图表的配置项和数据
            var option = {
                title: {
                    text: '本月产品销量记录',
                    subtext: "五月",
                    textAlign: "auto",
                    left: "center",
                },
                tooltip: {},
                legend: {
                    data: [],
                    bottom: 0
                },
                xAxis: {},
                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 initPie() {
            // 基于准备好的dom,初始化echarts实例
            var myChart = echarts.init(document.getElementById('m3'));

            var option = {
                title: {
                    text: '部门预算占比',
                    subtext: '贝贝分公司',
                    left: 'center',

                },
                tooltip: {
                    trigger: 'item'
                },
                legend: {
                    bottom: 0,

                },
                series: [
                    {#配饰改变#}
                    {
                        name: 'Access From',
                        type: 'pie',
                        radius: ['40%', '70%'],
                        avoidLabelOverlap: false,
                        label: {
                            show: false,
                            position: 'center'
                        },
                        emphasis: {
                            label: {
                                show: true,
                                fontSize: 40,
                                fontWeight: 'bold'
                            }
                        },
                        labelLine: {
                            show: false
                        },
                        data: [],
                    }
                ]
            };

            $.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 %}

在这里插入图片描述
在这里插入图片描述

更多推荐

人脸修复祛马赛克算法CodeFormer——C++与Python模型部署

一、人脸修复算法1.算法简介CodeFormer是一种基于AI技术深度学习的人脸复原模型,由南洋理工大学和商汤科技联合研究中心联合开发,它能够接收模糊或马赛克图像作为输入,并生成更清晰的原始图像。算法源码地址:https://github.com/sczhou/CodeFormer这种技术在图像修复、图像增强和隐私保护

OceanBase开源获信通院认可:开源300万行核心代码、社区答疑超3万次

昨日,在由中国信息通信研究院主办的“2023OSCAR开源产业大会”上,蚂蚁集团旗下的自研原生分布式数据库OceanBase荣获“2023OSCAR尖峰开源项目”、“2023OSCAR尖峰开源企业(开源运营与生态建设)”两个奖项。同时,完成可信开源社区评估,获得“可信开源社区”评估证书。OceanBase自2021年6

从0搭建夜莺v6基础监控告警系统(二):采集数据、打通夜莺显示

文章目录1.写在前面1.1.categraf采集数据1.2.官方文档传送门2.配置过程2.1.打通夜莺和VictoriaMetrics2.2.配置Categraf2.3.验证结果2.4.配置仪表盘3.部署总结3.1.操作总结3.2.仪表盘展示上一操作我们已经安装好了所需的基础服务,接下来需要打通各组件之间的数据推送和监

Kubernetes Dashboard安装部署

KubernetesDashboard安装部署1.下载Dashboard部署文件2.修改yaml配置文件3.应用安装,查看pod和svc4.创建dashboard服务账户5.创建admin-user用户的登录密钥6.登录6.1使用token登录(1)短期token(2)token长期有效6.2使用Kubeconfig文

Pyppeteer中文文档

介绍Pyppeteer是PuppeteerJavascript(无头)chrome/chromium浏览器自动化库的Python非官方端口,Puppeteer是在Node.js中使用的,而Pyppeteer是专用于Python语言的。本文档对应的是Pyppeteer的v0.0.25版本,从目前情况来看,Pyppetee

手机无人直播手机用哪些软件系统最好?

最近手机无人直播可是风靡大江南北,只要是一个抖音用户都想装个手机无人直播软件,随时随地开启手机无人直播,抖音8亿用户想想这个市场得有多大,蛋糕有多肥。那么问题来了,手机无人直播手机用啥软件?推荐:魔棒直播这里有多个理由我们还必须要选择它;1.因为手机无人直播软件,目前市面上清一色仅支持安卓版,支持苹果版的只有“魔棒直播

第2讲:Vue开发环境的搭建及运行

Vue开发环境搭建步骤1、安装nodehttp://www.nodejs.com.cn/一般安装在根目录下,直接下一步下一步安装即可。如何检测安装完毕node-v2、第二步:安装vue-cli脚手架npminstall-g@vue/cli,查看安装版本vue--version3、第三步:项目创建vuecreate项目名

软考复习 -- 计算机网络

1网络互连设备物理层:中继器和集线器(多路中继器)数据链路层:网桥和交换机(多端口网桥)网络层:路由器应用层:网关2广播域和冲突域3协议簇4网际层协议4TCP和UDP4.1TCP传输层协议——TCP:面向连接可靠的传输层协议,采用三次握手建立和关闭连接TCP的功能或服务有:可靠传输、连接管理、差错校验和重传、流量控制、

4-3 nn.functional和nn.Module

一,nn.functional和nn.Module前面我们介绍了Pytorch的张量的结构操作和数学运算中的一些常用API。利用这些张量的API我们可以构建出神经网络相关的组件(如激活函数,模型层,损失函数)。其实:Pytorch和神经网络相关的功能组件大多都封装在**torch.nn**模块下。这些功能组件的绝大部分

47个Docker常见故障的原因和解决方式

本文针对Docker容器部署、维护过程中,产生的问题和故障,做出有针对性的说明和解决方案,希望可以帮助到大家去快速定位和解决类似问题故障。Docker是一种相对使用较简单的容器,我们可以通过以下几种方式获取信息:1、通过dockerrun执行命令,或许返回信息2、通过dockerlogs去获取日志,做有针对性的筛选3、

源码:TMS FlexCel Studio for .NET 7.19

TMSFlexCelStudiofor.NET是100%托管代码Excel文件操作引擎以及Excel和PDF报告生成,适用于.NET、Xamarin.iOS、Xamarin.Android、Xamarin.Mac、WindowsPhone和WindowsStore功能概述使用FlexCelStudiofor.NET创建

热文推荐