失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > plotly----比matplotlib更简单更美观的交互式绘图python库

plotly----比matplotlib更简单更美观的交互式绘图python库

时间:2018-12-05 17:27:06

相关推荐

plotly----比matplotlib更简单更美观的交互式绘图python库

文章目录

1. plotly介绍2. 安装plotlyJupyterlab support(python 3.5+)图片导出工具安装nodejs相关安装orca安装 3. 使用plotly在线绘图离线绘图网页输出式绘图jupyter 中实时输出输出静态图片

1. plotly介绍

matplotlib是Python中最广为人知的图表绘制框架。但是它实在太复杂了,如果要画出较为漂亮的图,则需要付出很多的时间与精力。这次介绍一个Python下能轻松生成各种图表的框架plotly plotly是一个可交互,基于浏览器的绘图库,主打功能是绘制在线可交互的图表,所绘制出来的图表真的赏心悦目。它所支持的语言不只是Python,还支持诸如r,matlab,javescript等语言。plotly绘制的图能直接在jupyter中查看,也能保存为离线网页,或者保存在plot.ly云端服务器内,以便在线查看。

如果使用Python语言,建议用jupyter notebook或jupyterlab作为IDE, 在pycharm中使用plotly并不是一种很好的体验。

notice:我的系统是ubuntu16.04, 其他系统安装步骤望查看文末参考网站

2. 安装plotly

plotly的安装非常简单:

pip install plotly

Notice: 如果你只想使用plotly在线绘图功能,以下安装环节可略去不看

Jupyterlab support(python 3.5+)

如果只使用plotly在线版,上面一行命令就够了。但是,但是,我们画完图后肯定不想每次还要跳转到新的浏览器标签页查看,而是希望能在jupyter中直接查看,所以还需要配置一下jupyterlab支持。这需要使用pip安装jupyterlab以及ipywidgets

pip install jupyterlab==0.35 "ipywidgets>=7.2"

如果你的Python包管理器是conda:

conda install jupyterlab=0.35 "ipywidgets>=7.2"

当然,如果你之前已经安装过jupyterlab,那么可以在Python中查看相关库版本:

[1] import jupyterlab[2] jupyterlab.__version__[Output] '0.35.2'[3] import ipywidgets[4] ipywidgets.__version__[Output] '7.4.2'

如果版本不满足相关要求,则升级一下jupyterlab

在安装好jupyterlab之后,安装一些要用到的jupyterlab 插件

注意,插件安装命令在linux与windows中有所不同

# 为避免"JavaScript heap out of memory"错误,首先在终端中输入如下命令# (OS X/Linux)export NODE_OPTIONS=--max-old-space-size=4096# (Windows)set NODE_OPTIONS=--max-old-space-size=4096# Jupyter插件jupyter labextension install @jupyter-widgets/jupyterlab-manager@0.38 --no-build# FigureWidget supportjupyter labextension install plotlywidget@0.8.0 --no-build# 离线绘图插件jupyter labextension install @jupyterlab/plotly-extension@0.18.2 --no-build# JupyterLab chart editor 表格编辑器(这是可选项,非必须)jupyter labextension install jupyterlab-chart-editor@1.1 --no-build# Build extensions 安装插件jupyter lab build# 去除NODE_OPTIONS环境变量# (OS X/Linux)unset NODE_OPTIONS# (Windows)set NODE_OPTIONS=

图片导出工具安装

plot.ly支持导出静态图片。plotly.io包中提供了to_imagewrite_image两个函数实现相应功能。这需要先安装plotly提供的orca1命令行工具库及psutilPython包。

首先可以尝试使用

conda install -c plotly plotly-orca psutil

进行安装。

但是我使用上述命令安装orca的时候网速过慢,没法安装。

通过查看orca安装说明,其提供了多种安装途径。最后选择了使用npm2安装(这又是一个大坑)

nodejs相关安装

安装nvm(不要直接安装nodejs,那样会安装到系统全局下,导致后续一堆关于用户权限的问题)

curl -o- /creationix/nvm/v0.34.0/install.sh | bash

安装输入如下命令,目的是让终端找到nvm环境变量,当然你也可以直接关闭重开一个新终端,就不用输入下列命令了

source ~/.bashrc

使用命令command -v nvm如果输出nvm那么说明安装成功了

使用nvm ls-remote可查看node所有版本

通过 nvm install <版本号> 命令安装node

安装完毕后,若node -v与’npm -v’能正常查看版本号,说明安装成功。

orca安装

在npm安装好后,不要急着安装orca。 还记得上面使用conda安装时遇到的国外源速度过慢问题么,npm默认源也是国外的,我们先将其换为国内源(不要问那为啥不换conda的镜像源,已经尝试过换成清华及我大肥科的,但依然没啥卵用,应该是没有收录)

安装cnpm

npm install -g cnpm --registry=https://registry.

使用cnpm而非npm安装orca

cnpm install -g electron@1.8.4 orca

总算是看到丝滑流畅的安装过程了233.

最后验证一下是否安装成功,在终端输入如下命令

orca graph '{ "data": [{"y": [1,2,1]}] }' -o fig.png

High five!

Last but not least

如果你需要导出eps格式图片文件(latex写论文有时需要这样的图表),那么需要安装popplerinkscape

#也许需要加上那个在需要请求帮助时会说出来的有魔力的词:)apt-get install poppler-utilsapt-get install inkscape

3. 使用plotly

在线绘图

首先注册一个plotly账号,在用户头像–setting–API Keys下生成API key

在jupyterlab 中输入

import plotly.plotly as pyimport plotly.graph_objs as goplotly.tools.set_credentials_file(username='your_name', api_key='your_keys')trace0 = go.Scatter(x=[1, 2, 3, 4],y=[10, 15, 13, 17])trace1 = go.Scatter(x=[1, 2, 3, 4],y=[16, 5, 11, 9])data = [trace0, trace1]py.plot(data, filename = 'basic-line', auto_open=True)

输出一行提示语及一个网址,这时浏览器会自动跳转到该网页

High five! You successfully sent some data to your account on plotly. View your plot in your browser at https://plot.ly/~cookiegg/0 or inside your plot.ly account where it is named 'basic-line''https://plot.ly/~cookiegg/0'

该网页上输出图(在网页上该图是可以交互的):

离线绘图

网页输出式绘图

plotly提供了每个绘图函数的离线版本。

import plotlyimport plotly.graph_objs as goplotly.offline.plot({"data": [go.Scatter(x=[1, 2, 3, 4], y=[4, 3, 2, 1])],"layout": go.Layout(title="hello world")}, auto_open=True)

使用plotly.offline.plot可生成离线网页图片,如上述代码片段输出结果:

'file:/path/to/temp-plot.html'

使用浏览器即可打开该网页。

但这样的离线绘图模式显得非常麻烦,plotly提供了在jupyterlab环境中显示可交互图表的方法。

jupyter 中实时输出

plotly.offline.iplot函数可在jupyter中内嵌显示plotly交互式图表,只需要在jupyter notebook开头写入plotly.offline.init_notebook_mode(connected=True)即可:

import plotlyimport plotly.graph_objs as goplotly.offline.init_notebook_mode(connected=True)plotly.offline.iplot({"data": [go.Scatter(x=[1, 2, 3, 4], y=[4, 3, 2, 1])],"layout": go.Layout(title="hello world")})

输出静态图片

plotly.py 支持静态图片输出。plotly.io.to_image能将plotly 图表转为静态图

import plotly.graph_objs as goimport plotly.io as piotrace1 = [go.Scatter(x=[1,2,3], y=[4,5,6], marker={'color': 'red', 'symbol': 104, 'size': 10}, mode="markers+lines", text=["one","two","three"], name='1st Trace')]layout=go.Layout(title="First Plot", xaxis={'title':'x1'}, yaxis={'title':'x2'})figure=go.Figure(data=trace1,layout=layout)static_image_bytes = pio.to_image(figure, format='png')from IPython.display import ImageImage(static_image_bytes)

如果要保存静态图片,plotly.io.write_image能将图片转为包括png,jpg,pdf,svg,eps在内的多种格式。

TODO: 在使用plotly一段时间后会写一篇深入一些的使用介绍,Just let it be.

/plotly/orca ↩︎

/creationix/nvm ↩︎

如果觉得《plotly----比matplotlib更简单更美观的交互式绘图python库》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。