本文介绍如何使用python中最具盛名的交互式数据可视化工具plotly的简单使用。
通常我们拿到一个原始数据表,接下来就要进行简单的数据作图,通过可视化能够更快的发现其中包含特征的部分。特别是当数据很多的时候,需要对数据图标的平移缩放,另外就是检查特征数据点,这些都需要交互式作图。其中 plotly 是一个相当出色的交互式作图包。
环境部署
pip install plotly==5.24.1
https://plotly.com/python/getting-started/
这个模块是 plotly 作图导出为静态的图片,包括 svg 矢量图所必须的。
pip install -U kaleido
https://github.com/plotly/Kaleido
我最先是安装的 miniconda,很多包都是没有的,根据 vscode 中的报错,把缺失的包安装上,就能在 vscode 的 jupyter notebook 中查看 plotly 绘制的图形了。
pip install nbconvert
作图需求和结果
这里我想查看双通道的单分子定位的数据。所以首先希望坐标轴比例是一致的,然后不同通道的使用不同的颜色,并且得有透明度。实现效果如下。
完整示例代码
相比于网上一些简单的教程,要实现我的需求,还是要进行不少代码的修改。不过poltly的作图的逻辑非常清晰,data 和 layout 有更好的解耦(相比于matplotlib)。
from plotly.offline import init_notebook_mode, iplotinit_notebook_mode(connected=True)import plotly.graph_objs as go
tv1 = go.Scatter(x=a.data.x, y=a.data.y, name='647', mode='markers', marker = dict(color = 'rgba(221, 67, 123, 0.3)'), )
tv2 = go.Scatter(x=b.data.x, y=b.data.y, name='561', mode='markers', marker = dict(color = 'rgba(0, 104, 55, 0.1)'), )
data = [tv1, tv2]
layout = go.Layout( title={ 'text': 'Single Molecule Localization Visualization', 'x': 0.5, # 让title在figure居中 'y': 0.88, # 控制title在figure中的相对位置(y方向) }, # 控制figure的大小和坐标轴比例 height=600, width=600, scene=dict(aspectratio=dict(x=1,y=1)))
fig = dict(data=data, layout=layout)
iplot(fig)