Django Highcharts制作图表


Posted in Python onAugust 27, 2016

在运维工作总很多数据最终的展现方式要用到图表,毕竟用图来展示要比一堆数字更直观些,比如利用率、站点的PV,UV等,大家千万不要觉得看到很多漂亮的图就感觉很难,其实真心不是,因为现在有很多前端的绘图库,你只需要按它要求的格式(json)提供给前端接口,什么曲线图、饼图,还有你从来都不知道的图都可以生成出来,现在用的比较多的是highcharts,echarts等,django-highcharts是django的一个集成库,使用它在django里更方便绘制出我们想要的图表,所以这篇文章就使用它来完成一个超小项目,实现一个站点的PV,UV曲线图, 另外我一直认为公众号其实不太合适贴太多的代码,要看代码最好还是用专业的编辑器,如果通篇都是代码,我估计很多人直接就收藏了,时间久了自己都忘了,起不到真正学习的目的, 所以今天我重点还是讲使用步骤,确保下次大家开发的时候会用,代码只是辅助,当然核心的我也会全部贴出来,但完整的代码限于篇幅就不在贴了,另外这篇是需要小伙伴们有django一点点基础的,如果没有任何基础,可能需要先了解下基本mvc的概念,否则你可能会看的云里雾里, 其它不多说了,现在开始,我先介绍下开发环境:

python 2.7 + django1.8.2 + mysql (版本随意)

第一步,安装django-higchats,这个根据大家使用的环境即可,pip或直接用pycharm工具安装都可以。

第二步,新建project 和app

第三步,以上做完,就可以敲代码了,先建models,就是数据库表的表结构,日常站点访问数据PV,UV数据可以插入到这个表里,一会我们要使用。

第四步,图表模块代码编写,这部分主要是一个类从数据库表中获取数据,然后将数据提供给图形展示类,代码如下:

class pudata(object):
 
  def __init__(self, dbobj):
    self.dbobj = dbobj
    self.pdays = self.dbobj.objects.all()
 
  def mpvdate(self):
    res = {}
    for v in self.pdays:
      res[v.days] = v.pvisitor
    res = collections.OrderedDict(sorted(res.items(), key=lambda d: d[0]))
    return res
 
  def muvdate(self):
    res = {}
    for v in self.pdays:
      res[v.days] = v.uvisitor
    res = collections.OrderedDict(sorted(res.items(), key=lambda d: d[0]))
    return res
 
class MindgViewPv(HighChartsMultiAxesView):
  p = pudata(mindg)
  title = 'mindg.cn'
  tooltip = {'shared': 'true'}
  chart_type = 'spline'
  categories = p.mpvdate().keys()
 
  @property
  def yaxis(self):
    y_axis = [
    {
      'title': {
        'text': 'PV'
      },
    }
    ]
    return y_axis
 
  @property
  def series(self):
    p = pudata(mindg)
    series = [
      {
      'name': 'mindg.cn',
      'data': p.icypvdate().values()
      }]
    return series

第五步,模板层代码,模板采用ajax方式,从后台获取的json数据给highcharts然后绘制曲线图,代码如下:

{% extends 'head_css.html' %}
{% load highcharts_tags %}
 
{% block js %}
 <script type="text/javascript">
  $(function (){
    $.getJSON("{% url 'mpv' %}", function(data) {
      $('#container').highcharts(data);
    });
  });
  </script>
 {% endblock %}

有了上面的代码,就可以通过view函数将mindg.html 渲染出来了,最终图如下:

Django Highcharts制作图表

关于highcharts的使用就介绍到这里,如有疑问请我直接留言。

Python 相关文章推荐
使用python3.5仿微软记事本notepad
Jun 15 Python
python中numpy基础学习及进行数组和矢量计算
Feb 12 Python
Python计算斗牛游戏概率算法实例分析
Sep 26 Python
Python实现感知器模型、两层神经网络
Dec 19 Python
利用python将xml文件解析成html文件的实现方法
Dec 22 Python
python验证码识别教程之利用滴水算法分割图片
Jun 05 Python
python控制nao机器人身体动作实例详解
Apr 29 Python
Python 一键制作微信好友图片墙的方法
May 16 Python
python yield关键词案例测试
Oct 15 Python
django框架ModelForm组件用法详解
Dec 11 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
Nov 15 Python
Python 类,对象,数据分类,函数参数传递详解
Sep 25 Python
Python连接DB2数据库
Aug 27 #Python
使用python绘制常用的图表
Aug 27 #Python
python实现实时监控文件的方法
Aug 26 #Python
Python爬取京东的商品分类与链接
Aug 26 #Python
Python设计模式之抽象工厂模式
Aug 25 #Python
简单谈谈python中的Queue与多进程
Aug 25 #Python
利用Python自动监控网站并发送邮件告警的方法
Aug 24 #Python
You might like
用PHP将数据导入到Foxmail
2006/10/09 PHP
php生成xml简单实例代码
2009/12/16 PHP
基于php伪静态的实现详细介绍
2013/04/28 PHP
Yii2增删改查之查询 where参数详细介绍
2016/08/08 PHP
docker-compose部署php项目实例详解
2019/07/30 PHP
js Date自定义函数 延迟脚本执行
2010/03/10 Javascript
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
2013/08/13 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
jquery学习笔记之无new构建详解
2017/12/07 jQuery
Nodejs中获取当前函数被调用的行数及文件名详解
2018/12/12 NodeJs
nodejs对mongodb数据库的增加修删该查实例代码
2020/01/05 NodeJs
基于Vant UI框架实现时间段选择器
2020/12/24 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
2021/03/01 Vue.js
Python中用Decorator来简化元编程的教程
2015/04/13 Python
详解Python中time()方法的使用的教程
2015/05/22 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
Python错误的处理方法
2020/06/23 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
关于 HTML5 的七个传说小结
2012/04/12 HTML / CSS
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
英国著名书店:Foyles
2018/12/01 全球购物
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
.net C#面试题
2012/08/28 面试题
语文教育专业推荐信范文
2013/11/25 职场文书
求职信范文大全
2014/05/26 职场文书
个人公司授权委托书范本
2014/10/12 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
教师求职自荐信
2015/03/26 职场文书
交通肇事罪辩护词
2015/05/21 职场文书
MySQL系列之九 mysql查询缓存及索引
2021/07/02 MySQL
idea编译器vue缩进报错问题场景分析
2021/07/04 Vue.js