django Echarts画柱状推移图

堆叠图深度解析:适用场景、绘制技巧与Python实战 数据可视化是数据分析与呈现的核心环节,旨在将复杂数据转化为直观图形,以揭示模式、趋势和洞见。其基本原理在于利用人类视觉系统对形状、颜色和位置的敏感度,高效传递信息。在众多图表类型中,堆叠图(Stacked Chart)因其能同时展示整体趋势与部分构成而具有独特技术价值,常用于业务报告与业绩分析中对比不同分类下各组成部分的贡献。然而,其应用存在明确边界,例如在需要精确比较不同分类下同一部分绝对值时,堆叠图会因视觉基线不统一而引入误导,此时分组柱状图或折线图往往是更清晰的选择。本文聚焦于堆叠图的工程实践,通过P 阅读详情

1. 首先确定要画什么样的图,在Echarts官网找好案例

2.根据图确认需要准备的数据,从后台准备数据传递给模板

3.模板渲染,使用Echarts组件功能完成自己想要的内容

中间遇到几个坑:

1. by月份统计客户来访次数,数据库中存入的是Date格式,如何转换月份? XXX.strftime("%Y") 这样就可以以单独获取年月日

2.如何从数据库中By月份拿数据? 参考下面这一句,先mapping年,再来是月,再来是你想要做的事

models.VisitCusInfo.objects.filter(auditDate__year=row[0:4],auditDate__month=row[5:7],visitCompany__companyName=com).values("visitCompany__companyName").count()

3.后台写好数据传入前台js时报错,是因为模板渲染了,需要加入 {{ |safe }}

OK,先看结果:

后台代码,里面有很详细的注释:

from django.shortcuts import render,HttpResponse
from app1 import models
from datetime import datetime,date,timedelta

def columnsChart(request):
    #统计所有来访公司来访次数的by month推移图(柱状堆叠图)
    #要画图第一步,获取行名和列名
    #列名: 获取visitCus中 所有来访公司的名字
    #行名: 获取所有数据库中的月份
    #数据:获取所有来访公司在数据库表中的count

    #首先获取列名:所有公司名称
    companys = models.VisitCusInfo.objects.values("visitCompany__companyName").distinct()
    cols=[]
    for company in companys:
        if company["visitCompany__companyName"] not in cols:
            cols.append(company["visitCompany__companyName"])
    print(cols)
    #再来获取行名及数据
    dates = models.VisitCusInfo.objects.values("auditDate") #by客户稽核时间
    #对获取到的时间格式整理成by month,只获取月份
    rows = []
    for row in dates:
        month = row['auditDate'].strftime("%Y-%m")
        if month not in rows:
            rows.append(month)
    rows.sort()
    print(rows)
    #by月份 by公司获取每个公司访问次数
    #Echarts官网source参考: 获取legend
    # legend: {
    #     data:['直接访问','邮件营销','联盟广告','视频广告','搜索引擎','百度','谷歌','必应','其他']
    # },
    legend_data=cols
    #获取x轴数据,Echarts官网示例
    # xAxis : [
    #     {
    #         type : 'category',
    #         data : ['周一','周二','周三','周四','周五','周六','周日']
    #     }
    x_data = rows
    #获取数据内容,Echarts官网示例:
    # series : [
    #     {
    #         name:'直接访问',
    #         type:'bar',
    #         stack: '广告',
    #         data:[320, 332, 301, 334, 390, 330, 320]
    #     },
    #     {
    #         name:'邮件营销',
    #         type:'bar',
    #         stack: '广告',
    #         data:[120, 132, 101, 134, 90, 230, 210]
    #     },
    series=[]
    #rows存的是日期,cols存的是公司名

    for com in cols:

        serie = {"name":com,"type":"bar","stack":"访问次数","data":None}
        series_data = []
        for row in rows:
            cnt = models.VisitCusInfo.objects.filter(auditDate__year=row[0:4],auditDate__month=row[5:7],visitCompany__companyName=com).values("visitCompany__companyName").count()
            series_data.append(cnt)
        serie["data"]=series_data
        series.append(serie)
    #柱子宽度可以在这里设置,注意必须加在最后一个 'bar' 系列上才会生效,并且是对此坐标系中所有 'bar' 系列生效。
    series[-1]['barWidth']="40%"
    print(series)

    return render(request,"charts/visitChart.html",{"series":series,"x_data":x_data,"legend_data":legend_data})

 

再上前台代码:

{#<!DOCTYPE html>#}
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>visitCharts</title>
    <script src="/static/js/echarts.js"></script>
    <style>
        #chart1{
            width: 1000px;
            height: 400px;
        }

    </style>
</head>
<body>
    <div id="chart1"></div>
</body>
<script>
    // 基于准备好的dom,初始化echarts实例
    var myChart = echarts.init(document.getElementById('chart1'));
    //app.title = '堆叠柱状图';

    option = {
        tooltip : {
            trigger: 'axis',
            axisPointer : {            // 坐标轴指示器,坐标轴触发有效
                type : 'shadow'        // 默认为直线,可选为:'line' | 'shadow'
            }
        },
        legend: {
            //data:['直接访问','邮件营销','联盟广告','视频广告','搜索引擎','百度','谷歌','必应','其他']
            data:{{ legend_data|safe }}
        },
        grid: {
            left: '3%',
            right: '4%',
            bottom: '3%',
            containLabel: true
        },
        xAxis : [
            {
                type : 'category',
                data:{{ x_data|safe }}
                //data : ['周一','周二','周三','周四','周五','周六','周日']
            }
        ],
        yAxis : [
            {
                type : 'value',
                max: 5
            }
        ],
        series:{{ series|safe }},
        dataZoom: [
            {   // 这个dataZoom组件,默认控制x轴。
                type: 'slider', // 这个 dataZoom 组件是 slider 型 dataZoom 组件
                start: 20,      // 左边在 10% 的位置。
                end: 100         // 右边在 60% 的位置。
            },
               {   // 这个dataZoom组件,默认控制x轴。
                type: 'inside', // 这个 dataZoom 组件是 inside 型 dataZoom 组件
                start: 20,      // 左边在 10% 的位置。
                end: 100         // 右边在 60% 的位置。
            }
        ],
    };

    // 使用刚指定的配置项和数据显示图表。
    myChart.setOption(option);
</script>
</html>

 

如何使用Echarts完成柱状图重叠功能 业务需求中需要显示各个科目下的总公司预算帽和分公司预算帽的使用情况对比,所以在柱状图显示时就需要将总公司的柱子和分公司的柱子重叠在一起显示,以此来比较分公司使用了总公司多少的预算,业务很明确,但是如何做到柱子的重叠有点不明确。 山重水复 首先我去查询了kendoui的官网看看有没有柱状图重叠显示的属性,搜索一番后无果,kendoui只有柱状图叠加的使用样例,并没有柱状图重叠,这种情况下只能去寻... 阅读详情

相关推荐

eCharts 走势图

eCharts图标设计 。。制作走势图,这是本人整理出来,写了几个实例

echarts时间散点图_【前端图表】echarts实现散点图x轴时间轴

// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('main'));//第二步构造数据var data1 = [];//数据区域缩放组件var data2 = [];var data3 = [];//构造随机数var random = function (max){return (Math.ran...

weixin_39911066的博客 686

【MDC开发者课程】MDC功能软件-归控算法介绍

规控算法

博客标题不能为空我也没办法 1844

※大模型介绍/机器学习函数调用/绘图/读取文件/分析常用代码总结

面向AI编程

我的心曾悲伤7次 4839

【现代电路理论】【2】考尔法设计无源单口网络

夏 弥:其实你在冰面上看到鱼浮上来 明年冬天如果你还在那里,那鱼还是会上来换气 那时候你就可以带一把冰镐 把冰面砸开把鱼捞上来熬汤

痛苦的时候装出幸福相,这不是那么难做到的事 2883

四款办公Agent实测对比:WorkBuddy、千问办公、库库AI、豆包工作怎么选

AI Agent是一种能感知环境、自主决策并执行动作的智能系统,其核心在于工具调用、状态管理与错误恢复构成的执行闭环。在办公场景中,任务边界清晰、容错率高、重复性强,使Agent成为最容易落地的方向。通过调用本地文件、脚本或办公套件,Agent能自动完成文件批量处理、文档摘要、会议纪要等重复劳动,显著提升工作效率。目前WorkBuddy、千问办公、库库AI、豆包工作等产品分别从本地操作、办公套件嵌入、知识处理、轻量助手等路线切入,用户可根据自身场景选择。

weixin_29052717的博客 518

python动态柱状图_利用 Django 动态展示 Pyecharts 图表数据的几种方法

本文将介绍如何在 web 框架 Django 中使用可视化工具 Pyecharts, 看完本教程你将掌握几种动态展示可视化数据的方法!Django 模板渲染1. 新建一个 Django 项目命令行中输入以下命令django-admin startproject pyecharts_django_demo创建一个应用程序python manage.py startapp demo很多人学习pytho...

weixin_39887846的博客 324

深入了解神经网络:构建人工智能的基石

这篇博客将为您解释神经网络的构造,让您能够理解这个令人着迷的领域的基本工作原理。神经网络是人工智能领域的关键技术,它们的构造基于神经元的灵感,并结合了数学、统计和机器学习的原理。输入可以类比为神经元的树突,而输出可以类比为神经元的轴突,计算则可以类比为细胞核。较好的方法就是预先设定几个可选值,通过切换这几个值来看整个模型的预测效果,选择效果最好的值作为最终选择。:这是神经网络的核心部分,包含多个层次的神经元。、神经网络结构图中的拓扑与箭头代表着预测过程时数据的流向,跟训练时的数据流有一定的区别;

AI_dataloads的博客 2万+

Django+echarts【堆叠柱状图】【百分比显示】(附代码)

关于使用echarts堆叠柱状图百分比显示的问题 阿斯顿发个

weixin_44727274的博客 1385

蓝桥杯算法:打印图形——六芒星

【输入格式】 输入一行包含一个整数 n。 【输出格式】 输出一个六芒星,表示满足题意的图形。 【样例输入】 3 4 【样例输出】 【评测用例规模与约定】 对于所有评测用例,1 ≤ n ≤ 20。 总结: 第一次做图形题,做了蛮久,图形题有很多的方式去完成,它考验的是你能不能找到更简单的那一种方式. 我初看到这个图形,第一种想法是把这个六芒星当做六个小三角形来做,然后以某种规则排列一下,就能做出来,但是尝试了一下感觉太麻烦了。 然后我的第二种想法是,这个图形是对称图形,怎么能写出一半吗? 这样另一半想办

KeepCodeing 3835

5.2.4_标志位的生成

计算机组成原理之标志位的生成

人生得意须尽欢 7574

django Echarts画图,饼图,堆叠柱状图,百分比显示

先看最终画面:   后台代码: from django.shortcuts import render,HttpResponse from app1 import models from datetime import datetime,date,timedelta def columnsChart(request): #统计所有来访公司来访次数的by month推移图(柱状...

java_raylu的博客 5536

《四》:LBE,VR 大空间系列——Pico的空间扫描方式

(这里有个选项叫高精度扫描模式,这个功能在下方详细补充)系统会根据绘制的顶点,将区域分割成若干个4X4米的小方格,我们只需要根据提示,首先进入一个方格子空间内部,然后依次凝视每个区域上下左右前后六个面的小方格组,每一面4个,直至全部消失, 消失后地面会出现一个方形行走路径,我们沿着边缘正或反走一圈即可,完成后此块区域即自动消失。不过由于pico有一个高精度扫描圈,如图加粗的圆环,这个圆环的意思是在在内部的区域扫描精度较高,越远离原点的区域误差越大,所以为了更有效的利用,建议原点设置在场地中心区域。

unitygroup的博客 2880

Flask+ECharts实战:Python数据分析结果Web可视化全流程

在数据驱动的时代,数据分析与可视化是挖掘数据价值、呈现商业洞察的核心环节。其基本原理在于通过算法与统计方法处理原始数据,提取关键信息,并借助图形化手段将复杂结果直观呈现。这一技术组合的价值在于打通了从数据处理到决策支持的链路,广泛应用于舆情监控、商业智能、运营分析等场景。以电商评论分析为例,通过Python的pandas库进行数据清洗,结合jieba分词提取特征,再利用情感分析模型评估用户反馈,最终需要将分析结论有效传达。本文聚焦于如何将这一分析流程的成果,通过Flask构建的RESTful API与ECh

weixin_30613727的博客 302

KRC文件——编程中的重要文件

KRC文件是指KUKA机器人控制器(KUKA Robot Controller)所使用的文件格式。KUKA是一家知名的机器人制造商,其机器人控制器通过KRC文件来管理和执行机器人程序。KRC文件包含了机器人的运动指令、逻辑控制、传感器数据等信息,以及与机器人相关的配置参数。这些文件通常使用KRL(KUKA Robot Language)编写,是一种特定的编程语言。KRC文件具有扩展名为.krc的格式,可以在KUKA机器人控制器上直接加载和执行。

TechProX的博客 2970

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【Python大数据毕设项目】基于Hadoop的全球二氧化碳数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 源码 机器学习

本文设计并实现了一套基于Hadoop的全球二氧化碳数据可视化分析系统。系统后端采用Django框架,利用HDFS进行分布式存储,通过Spark引擎进行核心计算。功能上实现了年度趋势预测、季节性波动分析、临界阈值预警及异常事件检测。前端结合Vue与Echarts,将分析结果以图表形式直观展示。测试结果表明,系统运行稳定,能有效挖掘数据价值,为环境监测提供了高效的数据分析工具。

WEIXIN_JSJBSZDS的博客 338

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

计算机毕业设计之基于大数据的高速公路经营数据分析系统的设计和实现

整个系统通过各个模块之间的紧密协作,形成了一个高效、智能的经营数据分析解决方案,极大地提升了高速公路管理的现代化水平。数据看板集成了多个功能模块,为用户提供直观的数据展示和分析能力,将这些非结构化数据导入到Hadoop分布式文件系统中进行存储和管理,利用Spark框架对这些大规模数据进行快速的计算和分析,将处理后的结果存入MySQL数据库中以方便后续查询和检索,后端采用Django框架搭建Web应用服务器,前端则使用Vue.js库来创建交互式界面,并通过Echarts图表库绘制各种可视化图形。

2501_92338131的博客 393

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

计算机毕业设计之基于协同过滤算法的音乐推荐系统的设计与实现

本研究设计了一个基于协同过滤算法的音乐推荐系统,通过机器学习模型预测歌曲评论量,实现个性化推荐。系统采用微信小程序前端和Django后端架构,包含用户界面、管理后台和数据可视化大屏三大模块。数据可视化面板整合了歌曲热度、歌手排名、用户行为等多维数据,通过Echarts图表直观展示。系统实现了从数据采集(爬取网易云数据)、存储(MySQL)到分析预测的完整流程,测试结果表明能有效提升推荐精准度。该系统在技术实现、经济效益和用户体验方面均展现出良好可行性,为音乐推荐领域提供了新的解决方案。

2401_85506012的博客 265

如何使用echarts做出一个动态统计图

文章目录后端部分后端系统效果图使用到的数据库表结构关于传给后台控制器的过滤参数操作前的一些讲解显示数据页面之控制器部分业务层方法使用到的sql部分后台显示数据效果图开搞动态统计图效果图js部分代码统计图控制器部分 这里需要用到一个插件echarts,可在我博客资源中寻找并免费下载 官网地址(选择想要的统计图形效果):https://echarts.apache.org/zh/index.html 首先要先在后台部分显示出数据(一个控制器) 然后再考虑将这些数据统计图形式图形化处理(一个控制器

不知名博客 2276

eChars动态24小时x轴(以当前时间为基准往前推23小时)

js代码: let myDate = new Date(); let currentHours = myDate.getHours() + 1; let xAxisData = []; let hours = 0; for(let i = 0; i < 24; i++){ if(currentHours + i > 24){ hours += 1; xAxisData[i] = hours; }else if(currentHours + i == 24){ xAxisData[i] = 0;

GodSure0914的博客 809

echarts 堆叠柱状图3d效果_【python可视化】:pyecharts:柱形图、堆叠条形图、极坐标堆叠柱形图、极坐标堆叠分类条形图...

•本文字数:约1000字•阅读时长:约3分钟•难度:2颗星官方介绍:pyecharts 是一个用于生成 Echarts 图表的类库。Echarts 是百度开源的一个数据可视化 JS 库。用 Echarts 生成的图可视化效果非常棒,pyecharts 是为了与 Python 进行对接,方便在 Python 中直接使用数据生成图。斑点鱼诚心推荐一个网址:http://pyecharts.h...

weixin_39609527的博客 1231

echarts

&lt;div id="main" style="width: 600px;height:400px;"&gt;&lt;/div&gt; &lt;script src="~/lib/echarts/dist/echarts.js"&gt;&lt;/script&gt; &lt;script type="text/javascript"&gt;

weixin_34283445的博客 568

[echarts] 两侧堆叠柱状图

【代码】[echarts] 两侧堆叠柱状图。

qq_14993591的博客 677
上一篇: django画图echarts, Uncaught SyntaxError: Unexpected token & &#39;
下一篇: django Echarts画图,饼图,堆叠柱状图,百分比显示
路路的小豆
博客等级 码龄10年 1763粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值