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,timedeltadef 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_dataseries.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>

django Echarts画柱状推移图相关推荐

  1. matplotlib画柱状对比图

    背景 有两组数据,用柱状图表示出两组数据之间的差异 代码 import numpy as np from matplotlib import pyplot as plt ''' 柱形对比图 共有11组 ...

  2. Matlab画柱状、饼状填充图(亲测可用)

    Matlab画柱状.饼状填充图 1.     把下列代码保存为名为"applyhatch.m"的文件 function applyhatch(h,patterns,colorlis ...

  3. python饼状图颜色一样_使用echarts画饼状图,设置饼状图颜色

    前言: 前面已经跟大家分享了使用echarts画柱状图.折线图,一些之前自己遇到的坑也跟大家说了,这次就不再赘述.官方有配置文档,很详细,大家不懂的地方也可以交流. 今日分享重点:画饼状图. 1.引入 ...

  4. echarts 柱状堆叠图(图例和x轴都是动态的)

    问题描述: echarts柱状堆叠图,是很常用的图表,官网的例子很简单 .图例(legend),x轴(xAxis)都是写死的.但是一般实际应用中都是 动态的.下面就举个例子,实现图例和x轴都是动态的 ...

  5. 柱状折线图2-双柱状重合堆积折线-重写图例点击事件

    本例子: 使用了formatter方法重写了提示层的展示数据 使用了双x轴实现重合 使用了stack实现堆积 使用了legendselectchanged和dispatchAction重写了图例点击事 ...

  6. label mpchart 饼图_Origin系列:绘制柱状堆积图

    原创不易,感谢分享,欢迎转发,请点在看 堆积柱状图十分美观,不仅能够展示数据占比,更能表现其变化趋势,是科研必备技能 今天分享粉丝提出类似下列图形用Origin绘制多列柱状堆积图.希望对大家有所帮助 ...

  7. exlc如何对比_excel表格图形数据比较-Excel如何做柱状对比图

    excel表格怎么做数据对比图 Excel的图表功能已供了柱状对,下面以Excel 2010为例进行实例演示--用柱状图对比显示下面数据列一和系列二 1.选中数据→插入→柱形图→簇状柱形图 2.因为数 ...

  8. python画柱状图-Python画柱状统计图操作示例【基于matplotlib库】

    本文实例讲述了Python画柱状统计图操作.分享给大家供大家参考,具体如下: 一.工具:python的matplotlib.pyplot 库 二.案例: import matplotlib.pyplo ...

  9. 如何展现两极化数据,Excel柱状断层图不二之选

    点赞再看,养成习惯:至长反短,至短反长. 微信搜索[亦心Excel]关注这个不一样的自媒体人. 本文 GitHub https://github.com/hugogoos/Excel 已收录,包含Ex ...

最新文章

  1. 如何给Android应用创建本地服务
  2. 记录一个解决了一个下午加一个晚上的问题,关于springMVC上传文件的功能
  3. 未经处理的异常:System.Net.Sockets.SocketException: 以一种访问权限不允许的方式做了一个访问套接字的尝试...
  4. linux开发板最好芯片,既然是中国十大最有影响力的芯片之一 一定要有个好开发板...
  5. 【谷粒学院】通过对象存储OSS上传图片
  6. Teamcenter Item
  7. 动网产品失败, 合作伙伴寒心离去
  8. spring boot中小学餐饮配送系统 毕业设计-附源码645661
  9. php获取本机内网ip地址
  10. win7打不开计算机网络连接,win7电脑网络连接正常打不开网页怎么解决
  11. AR502H-CN开发笔记18:快速建立开发环境
  12. 50 Projects 50 Days - Expanding Cards 学习记录
  13. 如何在Joomla中创建一个漂亮的单页网站
  14. 陶泓达:最新黄金,原油短线交易策略!
  15. 天合光能宣布完成私有化
  16. 记录jmeter打开报错
  17. SpringBoot 集成 Smart-Doc
  18. Android HDCP开发小结
  19. 幻想-FLEX 3基础视频教程.
  20. 密码中用到的特殊字符有哪些?

热门文章

  1. 初中数学分几个模块_初中数学 | 中考数学的三大拉分“板块”,不看就吃亏了...
  2. iOS上将图片转为PDF
  3. python牛顿法寻找极值_【Python讲优化】S06E10 利用牛顿法求多元函数的极值
  4. 电子计算机系学生会特色活动,山东电子职业技术学院计算机与软件工程系
  5. Oracle数仓分区表创建及其数据清理存储过程
  6. Magento用的哪个php框架,选择MAGENTO的十个强大理由
  7. 分治算法——合并排序
  8. Swagger2简介
  9. 原代细胞专刊 | 人脐静脉内皮细胞
  10. 适合新手练习js解密的小站--拍拍贷参数--第六期