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 相关文章推荐
浅谈Python中的数据类型
May 05 Python
python编程培训 python培训靠谱吗
Jan 17 Python
对python的bytes类型数据split分割切片方法
Dec 04 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
Dec 10 Python
对Python中创建进程的两种方式以及进程池详解
Jan 14 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
Aug 05 Python
python网络编程之多线程同时接受和发送
Sep 03 Python
python进程的状态、创建及使用方法详解
Dec 06 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
Jan 16 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
Apr 30 Python
Python实现动态循环输出文字功能
May 07 Python
如何完美的建立一个python项目
Oct 09 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 trim 去除空字符的定义与语法介绍
2010/05/31 PHP
php入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
PHP简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
2015/06/29 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
javascript的数据类型、字面量、变量介绍
2012/05/23 Javascript
jQuery中extend函数详解
2015/07/13 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
canvas实现绘制吃豆鱼效果
2017/01/12 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
js实现滑动滑块验证登录
2020/07/24 Javascript
react-native 实现购物车滑动删除效果的示例代码
2021/01/15 Javascript
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
python2.7 mayavi 安装图文教程(推荐)
2017/06/22 Python
python实现二叉树的遍历
2017/12/11 Python
解决Python网页爬虫之中文乱码问题
2018/05/11 Python
python中tab键是什么意思
2020/06/18 Python
python中plt.imshow与cv2.imshow显示颜色问题
2020/07/16 Python
css3中检验表单的required,focus,valid和invalid样式
2014/02/21 HTML / CSS
法国娇韵诗官方旗舰店:Clarins是来自法国的天然护肤品牌
2018/06/30 全球购物
行政助理岗位职责
2013/11/10 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
八荣八耻演讲稿
2014/09/15 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
浅谈MySQL 亿级数据分页的优化
2021/06/15 MySQL
vue中使用mockjs配置和使用方式
2022/04/06 Vue.js
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技
Redis入门基础常用操作命令整理
2022/06/01 Redis