admin管理员组

文章数量:821245

plotly绘制3D图技巧

简介

Plotly 是一个非常强大的开源数据可视化框架,它通过构建基于 HTML 的交互式图表来显示信息,可创建各种形式的精美图表。本文所说的 Plotly 指的是 Plotly.js 的 Python 封装,plotly本身是个生态非常复杂的绘图工具,它对很多编程语言提供接口。交互式和美观易用应该是 Plotly 最大的优势,而 Matplotlib 的特点则是可定制化程度高,但语法也相对难学,各有优缺点。

安装及开发工具

安装通过 PIP 进行即可。

pip install plotly

Plotly Python 其对应的官网为Plotly Python Graphing Library,上面有一些教程和官方API接口的查询。

三维动态绘图

Plotly二大优势:1、自带交互式按钮,可用鼠标点击,拖动十分便捷。但需要注意若没有显卡驱动可能无法打开文件,如图中所示错误,此时需要安装更新显卡驱动,如图所示。

2、可以生成html文件,便于在各个电脑使用。

 

plotly绘制三维图需调用go.Scatter3d函数

#以下代码绘制静态图
data = []
trace = go.Scatter3d(x=, y=, z=, mode="lines", line=dict(color='orange'),name='XXX' + str(i + 1), opacity=0.7)
data.extend([trace])

x y z分别为对应坐标,mode为类型包括线性lines 散点型markers等等,需要根据具体情况具体使用,name为名称,opacity为透明度范围0~1。

#以下代码为绘制动态图
frames = []
for i in range(m):trace = go.Scatter3d(x=, y=, z=, mode="lines",             line=dict(color='orange'),name='', opacity=0.8)data.insert(0, trace)  ###这里用来补充线,否则绘制动图时,会消失for k in range(Page):a = []a = [go.Surface(x=, y=, z=, showscale=False, colorscale=colorscale2[k], opacity=0.5,name='填充区域',surfacecolor=SurfaceColor2[k])]   ###这里frame = [go.Frame(data=a, name=str(k))]frames.extend(frame)

这里为在静态图基础上绘制动态区域,需要对frams进行数据补充。

#生成图像所需数据
fig = go.Figure(data=data, frames=frames)
#滑块配置
steps = []
for k, f in enumerate(fig.frames):# print(str(k), f.name)step = dict(method="animate",label=str(atime[k]),args=[[f.name], frame_args(20)],)steps.append(step)
​
sliders = [dict(active=0,  # 默认值currentvalue={"prefix": "时间/μs:"},  # 滑动条显示的名称;pad={"b": 20, "t": 10},  # 调节滑动条的位置,单位像素;steps=steps
)]
#图层配置
fig.update_layout(# title='Slices in volumetric data',#          width=1200,#          height=1200,#          scene=dict(#                     zaxis=dict(range=[0, 1200], autorange=False),#                     aspectratio=dict(x=1, y=1, z=1),#                     ),hovermode="closest",updatemenus=[{"buttons": [{"args": [None, frame_args(-1.5)],"label": "▶",  # play symbol"method": "animate",},# {#     "args": [[None], frame_args(0)],#     "label": "◼",  # pause symbol#     "method": "animate",# },],"direction": "left","pad": {"r": 10, "t": 60},"type": "buttons","x": 0,"xanchor": "right","y": 0,"yanchor": "top",}],showlegend=True, #是否显示标注sliders=sliders,#滑块初始化scene=dict(camera=dict(eye=dict(x=POIN1Z[0], y=POIN1Z[1], z=POIN1Z[2]),up=dict(x=1,y=0,z=0)))#eye视角配置 up选择哪个坐标轴朝上)
picture = py.plot(fig,filename='XXX.html',auto_open=False)

showlegend=True, #是否显示标注,

filename生成的html文件名;

auto_open是否自动打开文件。

本文标签: plotly绘制3D图技巧