为 Plotly 绘图函数创建包装函数

Create a wrapper function for Plotly plotting functions

我正在使用 Jupyter notebook,我正在尝试为常规的 Plotly Scatter3d() 函数创建一个包装函数,使用我自己的布局设置,以便我可以在每次需要时直接调用它绘制一些东西,然后保存屏幕 space。

但是,这是行不通的。屏幕上没有显示任何内容。有谁知道为什么?

我的代码:

def BSplot3dPlotly(xyz):
xyz = np.reshape(xyz, (int(xyz.size/3), 3))

trace1 = go.Scatter3d(
    x=xyz[:,0],
    y=xyz[:,1],
    z=xyz[:,2],
    mode = 'markers', # lines+markers',
    #marker=Marker(color=Y, colorscale='Portland')
    marker=dict(
        size=12,
        line=dict(
            color='rgba(217, 217, 217, 0.14)',
            width=0.5
        ),
        opacity=0.8
    )
)

data = go.Data([trace1]) #[trace1]
layout = go.Layout(
    margin=dict(
        l=0,
        r=0,
        b=0,
        t=0
    )
)

fig = go.Figure(data=data, layout=layout)
py.iplot(fig, filename=name)

这里的输入 xyz 只是一个包含一些点的 x,y,z 坐标的列表。

对于 matplotlib,您必须运行以下内容才能看到图表:

%matplotlib inline

试试看。

  • 您正在定义一个函数 BSplot3dPlotly 但它没有 return 任何东西,这可能是您看不到任何东西的原因。
  • marker 字典中包含 line 没有任何作用。您需要将模式设置为 markers+lines 以获取标记和线条,然后使用单独的 line 字典。

import numpy as np
import plotly.graph_objs as go
import plotly.plotly as py
import plotly.offline as offline

def scatter3d_wrapper(xyz):

    trace = go.Scatter3d(
        x=xyz[:,0],
        y=xyz[:,1],
        z=xyz[:,2],
        mode = 'markers+lines',
        marker=dict(
            color='rgb(255,0,0)',
            size=12
        ),
        line=dict(
            color='rgb(0, 0, 255)',
            width=10
        )
    )
    return trace

xyz = np.random.random((20, 3))

trace1 = scatter3d_wrapper(xyz)

data = go.Data([trace1])

fig = go.Figure(data=data)
offline.plot(fig, filename='wrapper.html')