经过昨天的修改优化后, dalao 收到了不是 "木马" 的邮件, 欣慰地点了点头,"不错, 不错, 这几张表设计的简洁明了, 看着有货! 不过呀,,, 这些表的数据太多了一点, 十几天的数据一大溜, 能不能再简洁一点, 做一个汇总的图, 看起来一目了然! 去吧, 研究研究."
嗯咯, 的确表太长了, 数据太密集, 虽然, 该有的数据都有了, 正文汇总浓缩的也到了一定极限, 不能再继续汇总下去了, 不然就没有数据的实际意义了, 但是, 指标一个一个的找, 容易看岔, 一点都不用户友好! dalao 说的的确有道理, 撸一张图出来就可以涵盖一张大表的信息了, 掏出手机一看就能知道相关问题, 把握整体趋势了, 嘻嘻嘻~
那就继续优化...
dalao 说要图, 于是就有了 echarts!
python 环境中画图能手得数 matlibplot, 不过, 配色什么的都需要自己配置, 而且自己配出来的必然丑, 说起来还有些怀恋 R 语言里的 ggplot, 那是我年轻的时候用过的包... 当然呢, matlibplot+seaborn 也是不错的选择.
画图, 我还是喜欢 echarts, 百度出品, 值得信赖(此处五毛), 文档完备友好, 调用方便, 可做炫酷到没朋友的交互图, 关键是有中文版, 嘻嘻~
pyecharts 交互图
第一次看到它的文档就抑制不住心里蠢蠢欲动想装逼的心, 想给 dalao 炫一把, 但是冷静的想想, 我们的主战场是邮件正文, 上次说过一切试图交互的手段都别想在邮件的地盘得逞... 那就老实的画静态图吧, 那个 dalao 容易接受一点, 动态 GIF 看的头晕.
撸起袖子加油干!
首先研究一下 pyecharts demo
- from pyecharts
- import Bar
- attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
- v1 = [5, 20, 36, 10, 75, 90]
- v2 = [10, 25, 8, 60, 20, 80]
- bar = Bar("柱状图数据堆叠示例")
- bar.add("商家 A", attr, v1, is_stack=True)
- bar.add("商家 B", attr, v2, is_stack=True)
- bar.render()
需要注意的是, echarts 需要的数据格式是按列来提取的, 也就是要将表格数据转置, 即行列互换. 以下是知乎大佬的行列互换, 代码简洁的令人惊诧!
- In [1]: a=[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
- In [2]: print map(list,zip(*a))
- [[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]
这样我们就得到了供 pyecharts 绘图的数据弹药, 一样的, 我们使用 jinja2 模板将 pycharts 产生的图片塞到正文里, 代码中增加 addPic 函数.
当当当, 正文 + 表格 + 图片 + 附件的 dalao 自动报表邮件 2.0 就出炉了!
来源: https://www.cnblogs.com/qiaohaoforever/p/10216177.html