我正在研究Jupyter笔记本,我正在尝试使用我自己的布局设置为常规Plotly Scatter3d()
函数创建一个包装函数,这样我每次需要绘制一些东西时都可以直接调用它,并节省屏幕空间。
但这不起作用。屏幕上没有显示任何内容。有谁知道为什么?
我的代码:
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坐标的列表。
答案 0 :(得分:1)
BSplot3dPlotly
,但它不会返回任何可能是您没有看到任何内容的原因。 line
字典中marker
没有做任何事情。您需要将模式设置为markers+line
以获取标记和线条,然后使用单独的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')
答案 1 :(得分:0)
对于matplotlib,您必须先运行以下内容才能看到图表:
%matplotlib inline
试试。