pandas plot label_Python Django+SQL+Pandas+Pyecharts自建在线数据分析平台(十)

(一)需求分析&技术实现

(二)初步搭建Django环境

(三)页面布局&Django模板

(四)SQL+Pandas初步处理数据

(五)前端表单交互

(六)Ajax异步传参与加载

(七)前端数据格式的处理

(八)DataTables接管前端表格

(九)Pyecharts实现交互图表

(十)静态图表的展示

(十一)“导出数据至Excel”功能

(十二)添加和配置缓存

(十三)用户登录系统

(十四)部署Django至生产环境

在数据可视化的工作中,静态图表是一个非常容易被忽视的形式。但在信息化程度较低的传统行业中,静态图表却是必不可缺的存在,主要是因为:

让老板们自己操作BI是天方夜谭

好吧,即使抛开老板们的主观能动性和BI的操作难度,我们也要有觉悟——PPT还是大部分行业工作中汇报与沟通的最常用媒介。而以Matplotlib为代表的的静态图表在某些方面还是更加契合这个媒介:

  • Echarts, Highcharts等在线交互图表注定会因为“交互”的特性而不将一些信息置于表面(如鼠标hover才显示的tooltip),截图或保存图片无法呈现。
  • 在线交互图表靠截图或保存图片展示的DPI远低于手动绘制的图表。
  • Matplotlib以及衍生的Seaborn等静态图表库往往具有高度可定制化的特性,对细节的展示度更优。
  • Matplotlib以及衍生的Seaborn等静态图表库与统计学方法的展示结合更容易。

以下面Matplotlib绘制的气泡图为例,展示了治疗糖尿病的胰岛素市场所有产品的销售额规模和净增长,中间有一个线性回归拟合的趋势线及CI和PI(回归带上方的是净增长显著高于预期,下方则反之,落在带内的则是统计学上不显著)。其中还有一些定制化的细节呈现方式,如只显示top30产品的名字;文字标签相互之间不堆叠等。

现有的在线图表方案几乎很难呈现这样的效果,但这却是Matplotlib或者Seaborn的拿手好戏。

4b32127a0b88535abb5705833f6339f2.png

所以本章的目标是用我们在建的Django系统也能动态展示上方这样的Matplotlib静态图表。

在上章我们创建的charts.py中新建一个mpl_bubble方法,绘制气泡图:

import 

上方代码比较复杂,不要被吓着了,其实绝大部分都是为了完成Matplotlib的绘图结果。本章主要侧重于Django展示图片的方法,Matplotlib的部分不做讲解,毕竟那是另外一个超级大坑,能又写一个系列教程。

所以只需要特别注意下面这个片段,其他部分可以替换成你自己的matplotlib代码:

from 

这段代码是将上方大量代码绘制的Matplotlib图片保存为base64编码的字符串,再在头部加上Data URI scheme。这步可以说是浏览器展示静态图片的核心步骤。

我们再扩展上一章views.py中的prepare_chart方法,增加一类"bubble_performance"生成数据并传入到之前准备好的绘图方法中。注意和Pyehcarts不一样,这里直接取得返回的值就好了,不需要.dump_options():

D_TRANS 

再度扩展query方法,再增加一个context:

def 

再看看此时的query结果,下方多了大段字符串为静态图片的base64编码:

a5f1fab61ead38c32d7b3daf5273d024.png

之后的思路都和上一章很像,只是实现方法不一样。在display.html模板中,添加一个展示气泡图的tab,重点是留一个空的<img>标签:

<

注意上方<img>标签中的style="width: 100%",没有这句图片将展示原始尺寸。

最后再次追加filter.html中AJAX部分的回调函数,用jQuery的.attr语法修改之前预留<img>中的src参数:

<

大功告成,我们现在可以动态生成任意一个领域的复杂统计图表了。看看我们一直用来测试的高血压ARB市场的产品:

60a90e21793d2944ffe1e693de1ddf78.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值