使用Pyecharts画柱状图 折线图

官网:http://pyecharts.org/#/

这个工具是国人自己开发的,中文文档非常详尽易懂,使用方法可直接参考官网。

这里主要说下安装踩过的坑。

网上都说安装是: pip install pyecharts

我昨晚确实是这么安装成功,并且可以正常使用。但今天晚上再开机使用时就报错说找不到这个模块:pyecharts-snapshot,各种pip uninstall卸载重试,切换到admin账号卸载重装,全都不行。

最后是在翻看官网(http://pyecharts.org/#/zh-cn/team, new address: http://pyecharts.org/)右上角主菜单“生态系统”时,看到一个菜单项叫:pyecharts-snapshot,点击开来是一个github项目,往下翻这个github项目,发现有这么一条语句介绍安装方法:

 pip install pyecharts-snapshot

于是尝试了下在本地电脑上单独安装这个模块,装完后再 from pyecharts import Bar就正常通过了。原来的代码也能正常执行。


2019-05-15更新:
今天重新安装发现 pyecharts 代码升级后,要安装的东西不一样了,一些包的使用方式也有了变化。
要新安装的包:
pip install selenium
pip install snapshot_selenium

柱状图导入包的语句要用这一句:
from pyecharts.charts import Bar, Line

第二部分:

默认是将图表生成为html文件,下面要研究如果生成图片格式

http://pyecharts.org/#/zh-cn/prepare 有介绍

使用 pyecharts-snapshot 插件:
http://pyecharts.org/#/zh-cn/prepare?id=使用 pyecharts-snapshot 插件
如果想直接将图片保存为 png, pdf, gif 格式的文件,可以使用 pyecharts-snapshot。使用该插件请确保你的系统上已经安装了 Nodejs 环境。

  1. 安装 phantomjs $ npm install -g phantomjs-prebuilt
  2. 安装 pyecharts-snapshot $ pip install pyecharts-snapshot
  3. 调用 render 方法 bar.render(path='snapshot.png') 文件结尾可以为 svg/jpeg/png/pdf/gif。请注意,svg 文件需要你在初始化 bar 的时候设置 renderer=’svg’。

PhantomJS 是只有后端的浏览器,可在爬虫时完美模拟前端页面,对应简介可参考:https://yq.aliyun.com/articles/53969

更多内容请移步至 pyecharts-snapshot

phantomjs: http://phantomjs.org/download.html

直接用示例代码会报错:
env.render_chart_to_file(bar, path=‘bar.html’)

报错信息:
File "\ProgramData\Anaconda3\envs\python36\lib\site-packages\pyecharts_snapshot\main.py", line 119, in make_a_snapshot
raise OSError(content_array)
OSError: ["ReferenceError: Can’t find variable: echarts\n\n undefined:1\nnull\n"]

可以先用这种方式把html文件转换成图片文件:

from pyecharts_snapshot.main import make_a_snapshot
make_a_snapshot('render.html', 'clother.gif')

在Centos上执行: npm install -g phantomjs-prebuilt 会报错,
报错信息:

Phantom installation failed { [Error: EACCES: permission denied, link '/tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2-extract-1545013537793/phantomjs-2.1.1-linux-x86_64' -> '/usr/local/node-v10.14.2-linux-x64/lib/node_modules/phantomjs-prebuilt/lib/phantom']
  errno: -13,
  code: 'EACCES',
  syscall: 'link',
  path:
   '/tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2-extract-1545013537793/phantomjs-2.1.1-linux-x86_64',
  dest:
   '/usr/local/node-v10.14.2-linux-x64/lib/node_modules/phantomjs-prebuilt/lib/phantom' } Error: EACCES: permission denied, link '/tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2-extract-1545013537793/phantomjs-2.1.1-linux-x86_64' -> '/usr/local/node-v10.14.2-linux-x64/lib/node_modules/phantomjs-prebuilt/lib/phantom'
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! phantomjs-prebuilt@2.1.16 install: `node install.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the phantomjs-prebuilt@2.1.16 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-12-17T02_25_43_064Z-debug.log

解决方案:

sudo npm install -g phantomjs-prebuilt --unsafe-perm

Leave a Reply

Your email address will not be published.