他来啦,他来啦,他带着需求走来了,产品经理带着满脸笑意向你走近,把笔记本电脑放在你的面前,指着屏幕说我们的页面展示出的东西需要变成一个word 并支持客户下载,我看了一下页面上用echart生成的图,好像有点不会,本想反抗一下。产品经理按住我,对我说这个做好,我们部门那个*** 给你介绍一下。这听起来还不错!
1. Pyecharts
pyecharts 是一个用于生成 Echarts 图表的类库。 pyecharts 是为了与 Python 进行对接,方便在 Python 中直接使用数据生成图。
优势:
美观性:echarts有什么图(2D,not 3D),这个基本就可以实现什么图片的转化;
易用性:对于写python的人来说,实在是舒服,只需要几行代码,就可以实现图片转化;
可扩展性:echarts的群体已经很庞大了,这个python结合echarts的内容,很具有发展方向。
劣势:
参数不熟悉,导致前期调研需要时间,比如图片大小(像素、存储)的控制
生成图片时间过长。(1张图片需要5s,图片很大导致的)
碰到具体问题
Pyecharts生成的图片太大了(大小有5M以上,我们需要将图片大小缩小)
基于Python改变图片像素大小
运行代码前要安装图像处理库pillow,安装命令:
pip install pillow
示例代码:
from PIL import Image
grid.render(path='E:\\pngs\\overlap.png')
im = Image.open('E:\\pngs\\overlap.png')
w, h = im.size
im.thumbnail((w//2, h//2))
im.save('E:\\pngs\\overlap.png', 'png')
总结:Pyecharts生成图片时间过长,客户估计导出下载时间太长不容易接受
2.pygal
Pygal,可导出矢量图的Python可视化利器, 与Django、Flask等Web框架高度集成。
优势:
用法相对简单; 图表可交互性强; 图像可导出SVG格式(矢量图形);
劣势:
暂未发现明显劣势
碰到具体问题
使用pygal的render_to_png生成图片时中文乱码
修改font_family
- 1)from pygal.sytle import Style
- 2)定义一个Style对象,设置font_family属性为支持中文的字体
- 3)pygal绘图时传入该Style对象作为其style属性
在查看时发现这样一句话
若系统中未安装Yahei Consolas Hybrid字体,可以用SimHei代替
引申出来的问题 (可是我怎么发现系统中装了啥字体库尼?????)
查阅书籍看到关于linux系统字体的命令(先安装fontconfig)
查看当前语言
echo $LANG
列出字体列表
[root@blog ~]$ fc-list
列出所有中文字体 #:lang 指定语言
[root@blog ~]$ fc-list :lang=zh
列出所有英文字体:
[root@blog im4]# fc-list :lang=en
添加字体
切换路径到包含你下载到的字体的目录中;
使用 sudo cp *.ttf *.TTF /usr/share/fonts/truetype/ 拷贝到该文件夹
然后执行fc-cache
fc-cache 是一个在 Linux 系统中用于构建字体缓存信息的命令,它主要为使用 Fontconfig 系统的应用程序生成二进制缓存文件。fc-cache 会扫描系统中所有包含字体的目录并生成一个二进制的缓存文件,这样当搜索字体时就可以快速地检索已经生成的缓存文件,而不需要每次都扫描所有的字体目录。这有助于提高查找和渲染字体的速度。通常应该以管理员权限(例如使用 sudo 命令)运行该命令,以确保对系统文件的正确访问权限。