2017-02-07 7 views
0

Я работаю над ноутбуком 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) 

Здесь Imput xyz просто список, содержащий х, у, г координаты некоторых точек.

+0

пожалуйста показать ваш 'import', и как определяется' py'. Вы используете офлайн-сюжет? – Psidom

ответ

1
  • Вы определяете функцию BSplot3dPlotly, но она не возвращает ничего, что может быть причиной того, что вы ничего не видите.
  • Имея line в , диктофон ничего не делает. Вам нужно установить режим markers+line s, чтобы получить оба маркера и строки, а затем использовать отдельный файл line.

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, вы должны выполнить следующие действия, прежде чем вы можете увидеть графики:

%matplotlib inline 

Попробуйте это.

Смежные вопросы