Plotly介绍
- Plotly是一个基于JavaScript的绘图库,Plotly绘图种类丰富,效果美观。
- 易于保存和分享,Plotly的绘图结果可以与Web无缝集成。
- Plotly默认的绘图结果是一个HTML网页文件,通过浏览器可以查看。
Plotly绘图命令
在真实项目中,使用Plotly进行绘图的完整流程包括:
- 添加图轨数据trace
- 设置画图布局,使用
plotly.graph_objs.Layout
命令 - 集成图形、布局数据
- 绘制图形输出,用
plotly.offline.plot()
或者在jupyter notebook环境下用plotly.offline.iplot()
进行离线绘制
散点图/折线图
图轨数据trace本质上是个字典,由于是绘制散点图,在这里要用到plotly.graph_objs.Scatter()
函数创建散点图类的trace。trace包含的常用的键如下:
更多参数参照此帖
键 | 键值含义 |
---|---|
x | list类型;横坐标变量 |
y | list类型;纵坐标变量 |
name | 图例名称 |
maker | dict类型;节点设置;{color:’ ‘,size:’ '} |
text | list类型;元素标识 |
textposition | 标识位置 |
mode | ‘markers’表示点;‘lines‘表示折线;’text‘标识标识文本;可以用’+‘号将两种模式结合起来 |
connectgaps | bool类型;是否连接缺失值 |
color | 颜色 |
opacity | 透明度,值为0~1 |
可以创建多个trace作为输出图中的多组数据,设置完trace后,将所有trace数据集成于一个列表中,作为图形数据对象。
然后可以开始用plotly.graph_objs.Layout
命令进行画面布局。其常用参数如下:
更多参数参照此帖
参数名 | 参数含义 |
---|---|
title | 图表标题 |
xaxis | dict类型;{title:横坐标名称} |
yaxis | dict类型;{title:纵坐标名称} |
showlegend | bool类型;是否显示图例 |
legend | dict类型;图例相对于左下角的位置;{x:横坐标的比例(<=1),y:纵坐标的比例(<=1)} |
font | dict类型;字体样式和大小;{size:字体大小} |
设置好布局后,就可以将trace和layout两个字典用plotly.graph_objs.Figure()
集成在一起,结果将传给我们选择的绘图函数,最后将其用plotly.offline.plot()
或在jupyter notebook环境下用plotly.offline.iplot()
进行离线输出即可。
关于两个输出函数的差别
虽然plotly.offline.plot()
和plotly.offline.iplot()
两个函数都是离线输出图象的方法,但plot()
会生成一个离线的html文件,里面放置图片,iplot()
则直接在ipython notebook里面生成图片。
当在notebook中编译时,若要设置默认输出模式,可以在前面加上下面这句代码:
plotly.offline.init_notebook_mode(connected=True)
示例:
import plotly as py
import plotly.graph_objs as go
text=[]
for i in range(15):
s='t'+str(i+1)
text.append(s)
trace1 = go.Scatter(
x=[1, 2, 3, 4, 5,
6, 7, 8, 9, 10,
11, 12, 13, 14, 15],
y=[10, 20, None, 15, 10,
5, 15, None, 20, 10,
10, 15, 25, 20, 10],
text=text,
textposition='top center',
mode='markers+text+lines',
name='<b>No</b> Gaps', # Style name/legend entry with html tags
connectgaps=True #是否连接缺失值
)
trace2 = go.Scatter(
x=[1,