![v2-fe393ad3ef207ab23ea2713d7f7c55aa_1440w.jpg?source=172ae18b](http://img-02.proxy.5ce.com/view/image?&type=2&guid=e7a0a82d-0a30-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-fe393ad3ef207ab23ea2713d7f7c55aa_1440w.jpg?source=172ae18b)
安装Plotly的Python中的图形库
使用pip安装。
pip install plotly
官网关于Python的示例是最好的资料,各种样式的图并附有源码,可以自行寻找需要的类型,并结合例子学习。
plotlyplot.ly![v2-f1dc0db0b53087bc0e537a782153857c_ipico.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=e7a0a82d-0a30-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-f1dc0db0b53087bc0e537a782153857c_ipico.jpg)
绘制官网例子时会遇到的问题
官方例子导入模块时通常是这样的。
import
复制,运行,然后并没有发现图,但是终端会出现。
Aw, snap! We didn't get a username with your request.
Don't have an account? https://plot.ly/api_signup
Questions? accounts@plot.ly
这是因为官网例子是使用在线绘图模块,在线功能非常有趣。前提是你得注册账号并登陆,然而受网络限制,使得这件事变得不容易。所以本文中仅介绍在plotly的离线模块下如何绘图。除少部分需要在线加载数据的例子外,其余仅需修改下面两点即可成功绘制。
1、第一行导入模块时由(使用在线绘图模块)
import
更改为(使用离线绘图模块)
import
2、最后一行绘图时由(在线功能,生成在IPython notebook)
py
更改为(生成本地的html文件)
py
完成了这两点的更改,再去运行官网的例子时就会发现浏览器被调用并打开了一个网页,这个网页的内容就是我们所绘制的图像了。
很可能遇到的一个问题
官网的例子中最常使用的一个其他的第三方库是numpy,通常都是下面这样的代码。它的作用就是产生绘图所用的数据,例如产生等差数列、随机数列等。如果你没装numpy,请先安装!
import numpy as np
N = 100
random_x = np.linspace(0, 1, N)
random_y0 = np.random.randn(N)
numpy是python中关于数组与矩阵运算的第三方库,而plotly并非必须依赖numpy才可以工作,只是使用numpy产生、管理一定规模的数据很方便,贴心的Plotly官网甚至于给了Numpy的教程。
plotlyplot.ly![v2-f1dc0db0b53087bc0e537a782153857c_ipico.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=e7a0a82d-0a30-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-f1dc0db0b53087bc0e537a782153857c_ipico.jpg)
让我们来看一个来自官方的问题例子
先给链接。
Line Chartsplot.ly方便照顾懒得点开的童鞋,代码贴在下面(代码来自上面的连接)
import
所产生的图像如下
![v2-ff46c8ed5de014f1ff5f4623f44c601a_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=e7a0a82d-0a30-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-ff46c8ed5de014f1ff5f4623f44c601a_b.jpg)
如果浏览官网这部分内容时就会发现一个问题,官网的例子将图像放错了!(若官网将问题已修正,可以联系作者将这部分内容删除)
![v2-9ae642f9d5ce61e60b136cfd6dc75092_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=e7a0a82d-0a30-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-9ae642f9d5ce61e60b136cfd6dc75092_b.jpg)
还有更多错误等着你去发现(手动滑稽)!
来看看画个图我们都需要干点啥
代码的开始导入两个模块,至于为什么导入两个后面将会详细介绍。
import plotly.plotly as py # 别忘记离线要改为 import plotly.offline as py
import plotly.graph_objs as go
这部分使用了numpy模块来产生原数据。等差数列random_x 与随机数列random_y 。
# Create random data with numpy
import numpy as np
N = 500
random_x = np.linspace(0, 1, N)
random_y = np.random.randn(N)
go.Scatter函数的作用为将原数据转换成为‘轨迹数据’并赋值给变量trace 。
# Create a trace
trace = go.Scatter(
x = random_x,
y = random_y
)
最后一步py.plot函数将调用‘轨迹数据’生成html格式的图像。
data = [trace]
py.iplot(data, filename='basic-line') # 别忘记离线要将iplot更改为plot
将绘图步骤做个小结
- 导入模块
- 准备数据
- 转换数据
- 绘制图像
其他常见问题
导出为位图或矢量图,仅需在最后一行添加一个参数
py.plot(figAxis, filename='filename.html', image='svg')
image的作用为指定导出图片的格式,默认为None不导出图片。其中'svg'是矢量图的格式,可以使用浏览器查看。对于编写论文来说可能更常使用的pdf格式的矢量图。可以使用Adobe illustrator以矢量图方式编辑后再导出pdf,或其他格式转换工具进行格式转换。
image除 'svg' 外还支持 'png' 'jpeg' 'webp' 格式。如果对分辨率有要求,请先导出svg后再转换成其他格式便可以保证图像清晰。
其他问题
备忘纸条
官网提供了一个很方便的东西叫做Cheat Sheet(备忘纸条)
![v2-c9791be81415dde5bb78bcf06c40eb3e_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=e7a0a82d-0a30-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-c9791be81415dde5bb78bcf06c40eb3e_b.jpg)
下面这个连接就是上图所指的
https://images.plot.ly/plotly-documentation/images/python_cheat_sheet.pdfimages.plot.ly这是截图
![v2-cca7a7f1f7b7bca69e32fa3cb954561c_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=e7a0a82d-0a30-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-cca7a7f1f7b7bca69e32fa3cb954561c_b.jpg)
非常喜欢这个小东西,查看API真的很方便快捷。但是,新手请注意!!!新手请注意!!!这里面有些小错误,如果你完全照抄,可能会遇到这些错误!!!下面列举了两个例子。(如果官网已更正错误,或者你发现了更多错误的话都请告诉我)
![v2-4e56606a41bcf38a35a5995fa69a451d_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=e7a0a82d-0a30-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-4e56606a41bcf38a35a5995fa69a451d_b.jpg)
![v2-ca050965c7720bad84ca928d6c96d1d2_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=e7a0a82d-0a30-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-ca050965c7720bad84ca928d6c96d1d2_b.jpg)
Python2
官网有些例子是使用Python2写的,例如这个例子
3D Network Graphsplot.ly![v2-65a65e3e8c113f34ff44abb79db3994a_ipico.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=e7a0a82d-0a30-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-65a65e3e8c113f34ff44abb79db3994a_ipico.jpg)
其中仅适用于Python2的部分代码是从网站加载数据,plotly本身是Pyhton2与3通用的。
igraph
上面那个例子中还有一个是关于模块igraph的问题,这个模块因为同名问题使用pip安装会报错,如果想复现官网这个例子,请先参考这个链接解决这个问题。
Windows7 64位环境下Python-igraph环境配置www.cnblogs.com![v2-b1c52e30d127eda137b326ad6beda66b_180x120.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=e7a0a82d-0a30-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-b1c52e30d127eda137b326ad6beda66b_180x120.jpg)