2017-02-07 16 views
0

私はJupyterノートブックで作業しています。私は自分自身のレイアウト設定でPlotly Scatter3d()関数のラッパー関数を作成しようとしています。プロットする必要があり、スクリーンスペースを節約できます。Plotlyプロット関数用のラッパー関数を作成する

しかし、これは機能しません。画面に何も表示されません。なぜ誰が知っていますか?

マイコード:ここ

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のために

+0

あなた 'import'、そしてどのように' py'が定義されているを示してください。オフラインプロットを使用していますか? – Psidom

答えて

1
  • 関数BSplot3dPlotlyを定義していますが、何も表示されない理由は何も表示されません。
  • の中にlineを入れても何もしません。マーカーと線の両方を取得するには、markers+lineにモードを設定し、別のline dictを使用する必要があります。

enter image description here

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') 
+0

それで、私は内部からプロットしようとするのではなく、関数からトレース(およびレイアウト)を返す必要があります。とった!ありがとう。 – ap21

0

、あなたがチャートを見ることができる前に、以下を実行する必要があります。

%matplotlib inline 

はそれを試してみてください。

関連する問題