去年整理了个pyecharts+flask制作数据大屏的基础版,事情比较多,一直没时间进一步完善。这篇进阶版是基于上篇的基础上,说明如何实现一个功能完整的数据大屏。

注:本人对CSS和JS并不熟悉,只能说会点皮毛,能看懂,而大屏要漂亮还是要个前端来调样式的,这块内容就不阐述了,本文的核心内容是解决完善数据大屏的过程中遇到的问题

一、前提准备

查看这篇文章的前提是已经基于pyecharts + flask 搭建了一个能够动态刷新数据的基础大屏。具体可以参考:上一篇文章。

本文整个说明也是基于上篇文章Demo中的代码进行优化,主要就:app.pymain.html两个文件。

二、会遇到的问题

2.1JsCode在前后端分离情况下不生效的问题

formatter=JsCode("function(data){return data.name +':'+ data.value[2];}"),

pyecharts的官方Demo里面,会有一些需要动态加载一些JS代码的例子,这种功能在做数据大屏还是很有用的,比如需要根据查询结构的优良中差,动态调整柱状图的颜色(Demo:Bar_custom_bar_color)。但是按照Demo去实际,会发现JsCode里面的JS代码被当做字符串了(本地生成的html可以)。

问题原因:

通过ajax获取后台图表option数据的时候,这段JS代码是作为字符串传到前端的,有“”双引号。

解决方案

我用的是死办法,或返回option数据的时候,把双引号去掉,代码如下(代码没怎么优化)

def myUpdateJsCode(strSrc):strOut = strSrcbOK = Falsewhile bOK == False:re_ser = re.search("\"\s*function", strOut)if re_ser:index = re_ser.span()[0]strOut = strOut[:index] + strOut[index + 1:]iend = strOut.index("\"", index)  # 遍历下一个",function不能再有双引号strOut = strOut[:iend] + strOut[iend + 1:]else:bOK = Truereturn strOut

前端html,发送ajax请求的地方也需要做修改:

function fetchData1() {$.ajax({type: "GET",url: "http://127.0.0.1:5000/mapChart",//dataType: 'json',success: function (result) {var re_obj = (new Function("return " + result))();map.setOption(re_obj);}});}

2.2图表布局的问题

有时候柱状图的列名特别长,就是加倾斜后,显示效果并不是太好,可以在图表上面套一层Grid,来调整div内的显示布局

c = (Grid().add(bar, grid_opts=opts.GridOpts(pos_left="20%",pos_bottom="10%",pos_top="15%")))

通过pos 上下左右的调整能得到一个比较好的显示,return的是这个grid(return c)

2.3图表点击事件

这个记得是从echars的官方文档看来的,代码如下:

//点击事件mychart.on('click', function (params) {alert("单击了"+params.name+"_____"+params.value); //这里根据实际的需要编写其他内容,如跳转到详情页面});

mychart 是对应图表的对象。

2.4表格的绘制

数据大屏除了图就是表格了。表格的绘制跟pyecharts就没什么关系了,ajax + html去实现的了。这个在上一篇文章源码里面有,就不再描述了。实现方案就是动态填充表格的html代码。

2.5跨域问题

前端页面在请求后台数据的时候,是通过ajax请求访问的,页面里面会写一个请求地址。有时候我们发布到不同环境时,突然会发现页面上大数据展示不出来了。是因为ajax请求里面配置的地址不是当前系统的访问地址。

目前我的解决方案就是换一个部署环境需要同时修改ajax的请求地址(有时候也会忘)。

2.6其他

其他的基本就基于pyecharts的官方文档调图表的具体展示细节了。目前做的这个大屏就遇到这些问题,若后面还有再补充。

三、总结

1.pyecharts实现前后端分离的基础过程:html页面里面提供基础的布局,然后通过ajax请求从后台获取该图表的Option数据,然后就setOption生成图片。实际遇到一些问题可以和本地生成的图表html进行比较,看Option数据差在哪,进而再解决相应问题。

2.pyecharts是基于echarts的,有些pyecharts官方文档不涉及的内容,可以直接查看echarts的文档说明去解决,所以这两个文档都比较重要,比较好的是都是中文文档,读起来比较轻松。

另外下面两个配置项对于调整图表的美观很重要!多用用就熟悉了,看官方文档就行。

set_global_opts  #设置全局配置
set_series_opts  #设置系列配置

3.自学前端或找个前端。

pyecharts+flask制作数据大屏-进阶相关推荐

  1. 3000 字推荐一个可视化神器,50 行 Python 代码制作数据大屏

    作者 | 俊欣 来源 | 关于数据分析与可视化 今天小编给大家分享一个制作数据大屏的工具,非常的好用,100行左右的Python代码就可以制作出来一个完整的数据大屏,并且代码的逻辑非常容易理解. Py ...

  2. 用 Python 制作数据大屏,超简单

    作者 | 俊欣 来源 | 关于数据分析与可视化 今天我们用Streamlit模块来制作一个数据面板,将数据更加直观地呈现给别人观看,整个页面大致如下图所示: 制作工具栏 在页面的左侧是一个工具栏,工具 ...

  3. 如何从0-1制作数据大屏,我用大白话给你解释清楚了

    好莱坞大片<摩天营救>中有这么一个场景: 你可以看见反派大boss在屏幕上随便点点,就能看到每个角落的具体情况,不禁让人惊呼:满满的高科技! 其实这背后就是咱们今天要讲的数据可视化:把相对 ...

  4. 50 行 Python 代码制作一个数据大屏

    今天给大家分享一个制作数据大屏的工具,非常的好用,100行左右的Python代码就可以制作出来一个完整的数据大屏,并且代码的逻辑非常容易理解. PywebIO介绍 Python当中的PywebIO模块 ...

  5. PywebIO 轻松制作一个数据大屏,代码只需100行

    今天我给大家分享一个制作数据大屏的工具,非常的好用,100行的Python代码就可以制作出来一个完整的数据大屏,并且代码的逻辑非常容易理解. PywebIO介绍 Python当中的PywebIO模块可 ...

  6. Python制作可视化大屏(东京奥运会)

    目录 文章目录 前言 一.数据爬取 二.数据预处理 三.Pyecharts可视化 3.1 2020东京奥运会各国金牌分布图 3.2 2020东京奥运会奖牌榜详情 3.3 2020东京奥运会中国各项目获 ...

  7. 15分钟构建超低成本数据大屏:DataV + DLA

    为什么80%的码农都做不了架构师?>>>    第一步:准备低成本存储的业务数据和DLA表 OSS(https://www.aliyun.com/product/oss)是云上低成本 ...

  8. GoView 开源,一个好用的 Vue3 低代码开发数据大屏系统

    介绍 GoView 是一个高效的拖拽式低代码数据可视化开发平台,将图表或页面元素封装为基础组件,无需编写代码即可制作数据大屏,减少心智负担.当然低代码也不是 "银弹",希望所有技术 ...

  9. 【Python】全文3000字,Pyecharts制作可视化大屏全流程! (附代码分享)

    就在上一篇的文章当中 干货分享 | 用Pyecharts绘制20钟不同风格的炫酷交互式图表,建议收藏 有粉丝提到说是不是可以写一篇用Pyecharts模块做可视化大屏的相关教程,小编立马就答应了他的请 ...

最新文章

  1. [Flutter] Android沉侵式标题栏顶部叠加层去除
  2. [翻译]pytest测试框架(二):使用
  3. 【测试点分析】1060 爱丁顿数 (25分)_21行代码
  4. 老男孩python21期作业_(禁闲聊)绘画讨论10个群第176期作业展示
  5. Computer Vision的尴尬
  6. 嵌入式C语言基础(二)
  7. sdut 2074 区间覆盖问题(贪心)
  8. python 怎么表示sqlserver null_如何使用Python将sqlserver查询输出写入.txt文件?
  9. beego——模板语法
  10. 【ElasticSearch】Es 源码之 Discovery DiscoveryModule 源码解读
  11. hdu 1671 Phone List 字典树模板
  12. keil4出现目标未被创建_STM32入门系列-创建寄存器模板
  13. 电脑硬盘损坏数据还能不能恢复 解决方法来了
  14. 最全jar包下载地址
  15. python库itchat介绍(自动登录微信,自动回复消息)
  16. 怎样用360改计算机名称,360随身wifi网络名称怎么修改
  17. 《燃点》-- 星星之火可以燎原
  18. IPQ8072A Qualcomm IPQ CallManager拨号程序移植文档
  19. 2021-05-29 DOM元素的属性和操作:节点非内置属性,节点增删改查,cssDOM设置行内样式与非行内样式等
  20. Oracle的LAST_DAY函数

热门文章

  1. 有限元框架 FEniCS 安装笔记(ubuntu16.04、centos7、win10)
  2. 2018年终总结(三)家人和生活
  3. excel公式应用大全
  4. 记一次学习微信小程序开发的心得感悟
  5. LIS系统的基本框架
  6. 这个0成本必赚套利方法,值得你学习!
  7. Codeforces 8E Beads
  8. 手把手教你C51单片机(史上最详细)
  9. 米兔机器人重置_米兔积木机器人新玩法,双主控互联脱离手机遥控
  10. 【EasyExcel 教程】详解填充Excel -- 填充